在我的应用中,我收到了一些JSON
数据。如果我尝试将该数据保存为全局数据,请将其传递给JSON.stringify()
,然后通过JSON.parse()
,它不会作为对象返回,而是作为字符串返回。 stringify
步骤返回一个双重编码的字符串:
有什么可以让这种情况发生?没有人篡改JSON
对象或产品对象。也许我的对象中的一个特殊字符可能导致这种情况?
答案 0 :(得分:1)
根据@ecc的要求,这已从评论移至答案。
尝试使用
JSON.stringify(products.toJSON())
我不认为这是必要的正常行为,尽管我很难解释为什么在这种情况下有必要。通常,toJSON()会在stringify
函数内自动调用。
答案 1 :(得分:0)
首先,为什么需要进行字符串化,然后针对全局上下文进行解析。因为您可以直接将对象存储到全局。
进入屏幕截图时,第一次进行stringify时,此时变量不是对象。你可以检查一下类型。看起来你在串字化字符串。可能不在控制台中,但在代码中,您已将字符串化全局变量并在控制台中再次执行相同操作。检查你的代码。
答案 2 :(得分:0)
我弄清楚罪魁祸首是谁:原型。 我通过控制台发现原型是在故障车间系统中加载的。我通过删除导致问题的东西解决了这个问题:
if (window.Prototype) delete Array.prototype.toJSON;
我查了一下,stringify
方法实际上调用了toJSON
。原型正在压倒它并搞砸了。