混淆json对象和字符串和json.解析和JSON.stringify

Confused with json object and string and JSON.parse and JSON.stringify

本文关键字:json JSON stringify 字符串 对象 混淆      更新时间:2023-09-26

我使用node.js来处理ajax请求并返回一个对象。

如果我使用res.json(obj);,那么我得到一个string,我可以使用JSON.parse(string)将其转换为对象,一切都很好。

但如果我使用res.json(JSON.stringify(obj)),我也可以得到一个string,但JSON.parse(string)不会将其转换为对象。

两个string有什么不同?它们的内容看起来是一样的。我用typeof()来检查它们

所以res.json使用JSON。stringify(参见第242行),但它通过指定自己的json replacerjson spaces来进行自己的编辑。

这些都是JSON.stringify可以用来改变JSON字符串化方式的东西。在深入研究之后,似乎json spacesjson replacer没有默认设置,所以Express简单地使它,如果它们在你的应用程序设置中设置,它会拉出它们,并确保你的JSON响应匹配正确。

它还可以做一些事情,比如设置内容类型等。