一:JSON数据的两种解析方法 JSON.parse() 、eval ()方法
1 :JSON.parse() : 用于将一个 JSON 字符串转换为 JavaScript 对象。
var str = '{"name":"zhangsan","age":18,"gender":"man"}'; JSON.parse(str);
结果:
注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。(有的浏览器不支持 JSON.parse() 如:IE 6 、IE 7 就不支持)
2:eval(): 也是用于将一个 JSON 字符串转换为 JavaScript 对象
var str = '{"name":"zhangsan","age":18,"gender":"man"}'; eval('('+str+')'); // 格式: eval( '(' + string + ')' );
结果:
为什么eval()解析的时候要加括号?
那是因为eval()相当于一个执行环境,当你不加括号的时候,str 会被认为是一条复合语句。运行的时候就会逐个字符的解析。
但是加上括号的时候,str 就当做一个表达式去运算。从括号开始就被当做了对象进行识别。
JSON.parse() 和 eval()的区别
var num = 1; var jsonstr = '{"name":"zhangsan","age":++num}'; var jsondata1 = eval('('+jsonstr+')'); console.log(jsondata1); console.log(num);//这时num值为2 var jasondata2=JSON.parse(jsonstr); console.log(jsondata2);//报错
结果:
从上例就可以明显地看出, eval在解析字符串时,会执行该字符串中的代码。 由于用eval解析一个json字符串而造成原先的num的值改变(这样的后果是相当危险的)。
二:JSON.stringify() :用于将 JavaScript 值转换为 JSON 字符串
var str = {"name":"zhangsan","age":18,"gender":"man"}; JSON.stringify(str);
结果为:
三:jQuery.parseJSON() 将格式完好的JSON字符串转为与之对应的JavaScript对象
var str = '{"name":"zhangsan","age":18,"gender":"man"}'; jQuery.parseJSON(str)
结果:
如果这篇文章对您有用,请多多支持!
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。