我有定义为Javascript对象的数据结构。我喜欢将他们串起来通过网络发送。仅仅呼吁JSON.stringify()
似乎工作。但这是一个好习惯吗?直接JSON.stringify Javascript对象是一种很好的做法吗?
有什么特别的情况下,这可能会破坏(例如静态方法?)
我有定义为Javascript对象的数据结构。我喜欢将他们串起来通过网络发送。仅仅呼吁JSON.stringify()
似乎工作。但这是一个好习惯吗?直接JSON.stringify Javascript对象是一种很好的做法吗?
有什么特别的情况下,这可能会破坏(例如静态方法?)
JSON是JS的一个子集,所以从这个角度来看,这是100%的罚款。
JSON也旨在被转换成JS进行操作,并且转换回,而被送出,或存储。
所以转动对象插入JSON是的预期目的的一部分,而不是必须手工编写所有JSON。
根据特殊情况,JSON可以包含否函数,没有循环引用......除了嵌套对象和数组内的字符串,数字和布尔值之外,没有其他的引用。
如果这是已经在你的数据格式,你就大功告成了。
IE6和7没有本机JSON支持。
但是,json2.js是Douglas Crockford提供的所有本机实现所基于的文件。
如果然后加载该文件,它将在OldIE中正常工作。
如果你只是发送数据,而不是功能,它会正常工作。但是JSON只能携带的值 - 而不是的功能。旧版浏览器(< IE8)本身没有JSON对象,因此您将不得不提供后备解决方案(像jQuery这样的框架自动实现后备)。
是否意味着'JSON.stringify'会一直忽略所有浏览器中的对象原型? – Jayesh
除非你像扩展'window.Object.prototype'这样的东西,否则你应该很好。即使那样,你仍然应该没问题,但我会考虑测试一下,如果那是你的意图。 – Norguard
JSON是[*不是JS的严格子集](http://timelessrepo.com/json-isnt-a-javascript-subset)(虽然它通常“足够接近”)。 – user2864740