在前端传 foo 到后端,如果 obj.value 是空字符串,就把 null 传到后端:
const foo = obj.value || null
...
s = { foo: foo; }
data = JSON.stringify(s)
...
结果在后端收到是字符串 'null',这是 ajax 默认转换的吗?
1
opengps 2021-03-23 23:06:16 +08:00 via Android
不是太懂前端,试探性回复下:这是你传入了值
|
2
opengps 2021-03-23 23:07:45 +08:00 via Android
后端想要收到的值为 null,需要前端传递时候没有这个参数,或者声明入参类时候支持 null 才可以
|
3
des 2021-03-23 23:15:09 +08:00 via iPhone 1
不是,说明你代码有问题
|
4
AllenHua 2021-03-23 23:23:26 +08:00
如果 obj.value 是空字符串,就把 null 传到后端
`const foo = obj.value || null` 这一句里,如果 obj.value 是空字符串,那么会把空字符串给 foo 吧。 如果 obj 没有 value 属性,才会执行 || null, 会把 null 赋值给 foo 至于 后端收到字符串 null 你打印一下 obj 对象看看呢 `console.log('obj', obj)` |
5
Vegetable 2021-03-24 01:57:26 +08:00
你 stringfy 之后,data 只是字符串,不管你用什么方法传给后端,后端收到的都是字符串,没有哪个框架或者工具会把 null 改成字符串。如果他解析出了 null,只能证明他解析的方法有问题。JSON 是支持 null 的,字符串应该是`{"foo":null}`这样的。如果想排除你自己的问题,直接 network 看一下发出去的 body 就好了
|
6
IvanLi127 2021-03-24 08:06:33 +08:00 via Android
应该是后端的问题,你在前端再把 s 解析回 json 对象看看
|
7
renmu123 2021-03-24 08:21:51 +08:00 via Android
首先 json 只有 null 值等的
js 对象中如果有 null 值,json.stringify()是会进行转换的,undefined 是不会转换的。 我不知道 java 有没有所谓的空值(大概率是有的) 大概率是 json 解析器的问题 |