将对象转换为JSON字符串

124

https://dev59.com/FGMk5IYBdhLWcg3w0hM- - user2801382
4个回答

191

在调用本地浏览器方法window.JSON.parse()之前,jQuery仅进行一些正则表达式检查。如果该方法不可用,则使用eval()或更确切地说是new Function()来创建一个JavaScript对象。

JSON.stringify()JSON.parse()的相反操作,它将JavaScript对象序列化为字符串。jQuery本身没有这个功能,您必须使用浏览器内置版本或http://www.json.org中的json2.js

JSON.stringify()在所有主要浏览器中都可用,但为了与旧版浏览器兼容,仍然需要使用回退方案。


4
这可能会有所帮助:“var theObject =(typeof data ==“ string”)?jQuery.parseJSON(data):data;” - roberthuttinger
2
@tekretic:我希望你是在逗我玩。Chrome从第一天开始就实现了JSON宿主对象。 - jAndy
5
哇,抱歉。我不是在逗乐,但说错了。原来本地JSON支持已于2009年中旬 添加到WebKit,自Chrome 3.0起就已受支持。我的以前的完全错误的评论基于这个过时问题的一半和我目前正在使用的CMS实际上用自己的库替换了window.JSON,这意味着JSON.stringify()未定义。一切都失败了。 - Molomby
13
对于有兴趣的人,这里是一个漂亮的图表,展示了不同浏览器对原生JSON支持的情况。链接为:http://caniuse.com/json。 - Molomby
1
@jAndy:不要让我困惑;JSON.stringify“序列化”一个对象,请说这只是一个错误。 - halfbit
@halfbit 序列化是把一个对象转换成字符串并进行输出。反序列化则是把一个字符串转换成对象。 - JakeJ

12

另一个有用的是Object.toSource(),用于调试目的,其中您希望显示对象及其属性以进行调试。这是一个通用的Javascript(不是jQuery)函数,但它仅在“现代”浏览器中起作用。


5

将JavaScript对象转换为JSON数据

$("form").submit(function(event){
  event.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvertedData = JSON.stringify(formData);  // Convert to json
  consol.log(jsonConvertedData);
});

您可以使用http://jsonlint.com验证JSON数据。

2

2
请推荐使用SPL方法而不是附加逻辑库。 - David J Eddy
2
SPL = 标准PHP库。在这种情况下,可能是SJL(标准JavaScript库)。 - David J Eddy
3
这个问题涉及到 jQuery 和 Javascript。它与 PHP、PHP 库或 SPL 没有任何关系。 - George Filippakos
3
标准库是标准库,不管是哪种编程语言。我的观点是,更好的建议是推荐一种能够教授语言本身的解决方案,而不是仅仅依赖于“使用这个插件”的方式。 - David J Eddy
1
确切地说,为什么要重复造轮子呢……使用语言的标准功能而不是“插件”,但我偏离了主题。 - David J Eddy
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接