ajax 传值 JSON.stringify() 后,把 null 变成了 'null',这是默认转换的吗?

2021-03-23 22:11:13 +08:00
 lisisi

在前端传 foo 到后端,如果 obj.value 是空字符串,就把 null 传到后端:

const foo = obj.value || null
...
s = { foo: foo; }
data = JSON.stringify(s)
...

结果在后端收到是字符串 'null',这是 ajax 默认转换的吗?

1357 次点击
所在节点    问与答
7 条回复
opengps
2021-03-23 23:06:16 +08:00
不是太懂前端,试探性回复下:这是你传入了值
opengps
2021-03-23 23:07:45 +08:00
后端想要收到的值为 null,需要前端传递时候没有这个参数,或者声明入参类时候支持 null 才可以
des
2021-03-23 23:15:09 +08:00
不是,说明你代码有问题
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)`
Vegetable
2021-03-24 01:57:26 +08:00
你 stringfy 之后,data 只是字符串,不管你用什么方法传给后端,后端收到的都是字符串,没有哪个框架或者工具会把 null 改成字符串。如果他解析出了 null,只能证明他解析的方法有问题。JSON 是支持 null 的,字符串应该是`{"foo":null}`这样的。如果想排除你自己的问题,直接 network 看一下发出去的 body 就好了
IvanLi127
2021-03-24 08:06:33 +08:00
应该是后端的问题,你在前端再把 s 解析回 json 对象看看
renmu123
2021-03-24 08:21:51 +08:00
首先 json 只有 null 值等的
js 对象中如果有 null 值,json.stringify()是会进行转换的,undefined 是不会转换的。
我不知道 java 有没有所谓的空值(大概率是有的)
大概率是 json 解析器的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/764431

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX