JS对象与json字符串相互转换实现方法示例
本文实例讲述了JS对象与json字符串相互转换实现方法。分享给大家供大家参考,具体如下:
今天在面试的时候,面试官问到js对象与json字符串的互转问题,由于自己平时在用的时候没有在意,而且在工作中由于用的较少,没有答上来,所以今天特地查查资料复习一下,巩固一下这方面的知识。
1、js对象转换成json字符串
在与后端进行交互时,有时需要把js对象转换成json字符串格式,这时我们需要去引用一下json2.js这个文件,然后调用JSON.stringify()方法。例如:
vardata=newObject(); varjsonData=JSON.stringify(data);
2、json字符串转换成js对象
在工作中在ajax获取后端数据时,获取到的是json格式,有时就需要我们转换成js对象格式。在这里我们使用jQuery的一个$.parseJSON()方法将JSON格式的数据转换成js对象格式。例如:
varjsonData=$.getJSON(); vardata=$.parseJSON(jsonData);
当然,还可以使用JSON.parse()方法,方法同上,但是有的浏览器对JSON.parse()的支持不是很理想,所以在使用时尽量使用.parseJSON()方法。.parseJSON()方法在浏览器支持时会返回执行JSON.parse()方法的结果,否则会返回类似执行eval()方法的结果,具体参考jQuery1.9.1得出:
parseJSON:function(data){ //AttempttoparseusingthenativeJSONparserfirst if(window.JSON&&window.JSON.parse){ returnwindow.JSON.parse(data); } if(data===null){ returndata; } if(typeofdata==="string"){ //Makesureleading/trailingwhitespaceisremoved(IEcan'thandleit) data=jQuery.trim(data); if(data){ //MakesuretheincomingdataisactualJSON //Logicborrowedfromhttp://json.org/json2.js if(rvalidchars.test(data.replace(rvalidescape,"@") .replace(rvalidtokens,"]") .replace(rvalidbraces,""))){ return(newFunction("return"+data))(); } } } jQuery.error("InvalidJSON:"+data); },
这样就完成了js对象与JSON字符串的互转了。
PS:这里再为大家推荐几款比较实用的json在线工具供大家参考使用:
在线
JSON在线格式化工具:
http://tools.jb51.net/code/jsonformat
在线XML/