题
重复: 在jQuery中序列化为JSON
似乎jQuery中内置了一个JSON序列化器/反序列化器,因为它能够实现像.getJSON这样的东西。是否可以使用内置的jQuery JSON处理器本身作为通用的JSON处理器(即调用jQuery.something()来序列化/反序列化我自己的数据),而不需要单独的JSON库?
更新:上面提到的问题中的回答说jQuery中没有JSON序列化代码。 JSON反序列化怎么样? .getJSON是如何实现的,为什么暴露的反序列化功能不能用于一般用途?
Update2:我已经在json.org上使用了json2,我正试图摆脱它,因为我所做的只是简单的反序列化。听起来像jquery真的只是在做eval吗?我的印象是对安全性不太好:
eval功能非常快。 但是,它可以编译和执行 任何JavaScript程序,所以可以 是安全问题
解决方案
jQuery现在只使用eval()。 jQuery 1.4将在支持它的浏览器中包含对浏览器本机JSON反序列化的支持。你现在可以通过使用jQuery的dataFilter回调来尽可能避免使用eval()(将它放在$ .ajaxSetup中以自动影响所有$ .ajax(),$。postt(),$ .getJSON()调用。) p>
其他提示
您需要的是 http://www.json中提供的序列化/反序列化实现。 org / js.html 提供JSON.parse()和JSON.stringify(),方便(反)序列化和验证数据。
如果您只想将JSON文本转换为对象,请使用eval()函数。
我刚刚开始使用jQuery,我发现最简单的方法是从JSON.org中删除JSON2.js库,然后扩展jQuery以使用它。
我相信将传入的json数据反序列化为jQuery,只需eval()即可。我不知道内置的任何序列化。