小编典典

带有Prototype.js的JSON.stringify()数组异常

javascript

我试图找出json序列化出了什么问题,将我的应用程序的当前版本与旧版本一起使用,并发现JSON.stringify()的工作方式中存在一些令人惊讶的差异(使用json.org中的JSON库)
)。

在我的应用的旧版本中:

 JSON.stringify({"a":[1,2]})

给我这个

"{\"a\":[1,2]}"

在新版本中,

 JSON.stringify({"a":[1,2]})

给我这个

"{\"a\":\"[1, 2]\"}"

任何想法都可能会发生什么变化,以使同一库在新版本中在数组括号内加上引号?


阅读 467

收藏
2020-05-01

共1个答案

小编典典

由于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;
}
2020-05-01