我试图找出json序列化出了什么问题,将我的应用程序的当前版本与旧版本一起使用,并发现JSON.stringify()的工作方式中存在一些令人惊讶的差异(使用json.org中的JSON库) )。
在我的应用的旧版本中:
JSON.stringify({"a":[1,2]})
给我这个
"{\"a\":[1,2]}"
在新版本中,
"{\"a\":\"[1, 2]\"}"
任何想法都可能会发生什么变化,以使同一库在新版本中在数组括号内加上引号?
由于JSON.stringify最近已经随某些浏览器一起提供,所以我建议使用它而不是Prototype的toJSON。然后,您将检查window.JSON && window.JSON.stringify,否则仅包含json.org库(通过document.createElement('script')…)。要解决不兼容问题,请使用:
document.createElement('script')
if(window.Prototype) { delete Object.prototype.toJSON; delete Array.prototype.toJSON; delete Hash.prototype.toJSON; delete String.prototype.toJSON; }