我试图找出我的 json 序列化出了什么问题,将我的应用程序的当前版本与旧版本一起使用,并发现 JSON.stringify() 的工作方式存在一些令人惊讶的差异(使用来自json.org)。
在我的应用程序的旧版本中:
JSON.stringify({"a":[1,2]})
给我这个;
"{\"a\":[1,2]}"
在新版本中,
JSON.stringify({"a":[1,2]})
给我这个;
"{\"a\":\"[1, 2]\"}"
知道可以进行哪些更改以使同一库在新版本中的数组括号周围添加引号吗?
最佳答案
由于 JSON.stringify 最近已随某些浏览器一起提供,我建议使用它而不是 Prototype 的 toJSON。然后,您将检查 window.JSON && window.JSON.stringify,否则仅包含 json.org 库(通过 document.createElement('script')
...)。要解决不兼容问题,请使用:
if(window.Prototype) {
delete Object.prototype.toJSON;
delete Array.prototype.toJSON;
delete Hash.prototype.toJSON;
delete String.prototype.toJSON;
}
关于javascript - JSON.stringify() 数组与 Prototype.js 的奇怪之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40770693/