Js中将字符串转成JSON对象有两种方式:1)使用eval()函数;2)使用Function对象进行返回解析;3)使用JSON全局对象;4)使用JQuery.parseJSON(json) 如:var str='{"name":"Mike","sex":"女","age":"29"}'; 1)var strToObj = eval("(" + str + ")");转成JSON对象,为什么要加多加一个括号?由于json是以”{}”的方式来开始 及结束的,在JS中,它会被当成一个语句块来处理,所以加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强 制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来处理。 alert(eval("{}"); // return undefined alert(eval("({})");// return object[Object] 2)第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success对于返回数据 data的解析var data =(new Function("return " + str))();此时的data就是一个json对象了,可以看到其原理就是拼接 js代码字符串,然后使用 Function 创建一个匿名方法然后调用之. 3)使用JSON全局对象,JSON.parse()将字符串转成对象。JSON.stringify()将对象转成JSON格式的字符串。ie8(兼容模式),ie7和ie6没有JSON对象,需要引入json2.js脚本。 IE10中好像也不行,在Firefox,chrome中可以直接使用这两个方法。 例:var a={"name":"tom","sex":"男","age":"24"}; var b='{"name":"Mike","sex":"女","age":"29"}'; var aToStr=JSON.stringify(a); var bToObj=JSON.parse(b); alert(typeof(aToStr)); //string alert(typeof(bToObj));//object 4)此外,JQuery中也有将字符串转为JSON格式的方法:jQuery.parseJSON( json ),接受一个标准格式的 JSON 字符串,并返回解析后的JSON对象,需要注意的是,这个方法是 1.4版本才有的。 注意:对于json很多人经常会这样来定义:var jsonObj = '{name:"serafin", age:26}'; 在这里需要注意的是,这样定义在上面几种方法中,只有前面两种方法可以正常使用, 后面两种方法会出现报错!其实最标准的定义应该是这样的:var jsonObj = '{"name":"serafin", "age":26}'; 也就是说每个key都要用双引号括住!这样的格式在上面几种 方法都可以正常使用!
.JSON对象和字符串之间的转换 By taowei
最新推荐文章于 2022-02-16 17:00:10 发布