Javascript将JSON两次串联

时间:2016-02-29 16:54:09

标签: javascript json

在我的应用中,我收到了一些JSON数据。如果我尝试将该数据保存为全局数据,请将其传递给JSON.stringify(),然后通过JSON.parse(),它不会作为对象返回,而是作为字符串返回。 stringify步骤返回一个双重编码的字符串:

enter image description here

有什么可以让这种情况发生?没有人篡改JSON对象或产品对象。也许我的对象中的一个特殊字符可能导致这种情况?

3 个答案:

答案 0 :(得分:1)

根据@ecc的要求,这已从评论移至答案。

尝试使用

JSON.stringify(products.toJSON())

我不认为这是必要的正常行为,尽管我很难解释为什么在这种情况下有必要。通常,toJSON()会在stringify函数内自动调用。

编辑:我刚看到你的回答,解释了它!

答案 1 :(得分:0)

首先,为什么需要进行字符串化,然后针对全局上下文进行解析。因为您可以直接将对象存储到全局。

进入屏幕截图时,第一次进行stringify时,此时变量不是对象。你可以检查一下类型。看起来你在串字化字符串。可能不在控制台中,但在代码中,您已将字符串化全局变量并在控制台中再次执行相同操作。检查你的代码。

答案 2 :(得分:0)

我弄清楚罪魁祸首是谁:原型。 我通过控制台发现原型是在故障车间系统中加载的。我通过删除导致问题的东西解决了这个问题:

if (window.Prototype) delete Array.prototype.toJSON;

我查了一下,stringify方法实际上调用了toJSON。原型正在压倒它并搞砸了。