在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:
1.一种为使用eval()函数。
2. 使用Function对象来进行返回解析。
1.一种为使用eval()函数:
用eval函数来解析,并且使用jquery的each方法来遍历。
例如:
代码如下:
示例一:
<html> <head> <title>Json测试</title> <script src="/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script> <script type="text/javascript"> //基本上,Json返回的要么是对象,要么是数组,如果单纯返回一个字符串,那么就没有必要用Json了,因此 //Json基本就下面这些可,不过要注意双引号 var str0 = "{employees:'测试'}"; var obj0 = eval("(" + str0 + ")"); alert(obj0.employees); //输出测试 var str = "{name:'张三',Age:21}"; var obj = eval("(" + str + ")"); document.write(obj.name + obj.Age); //输出 张三21 alert(obj.name); //别看下面那段Json长,其实是一个对象,属性employees的值是一个对象数组。和上面的相比,只是name:张三 中的"张三"字符串 变成了对象数组而已 var str2 = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}'; var obj2 = eval("(" + str2 + ")"); alert(obj2.employees[0].firstName); //弹出 Bill var str3 = "[1,2,3,4,5,6]"; //json 数组 var obj3 = eval("(" + str3 + ")"); //输出 2 alert(obj3[1]); </script> </head> <body> <div id="div1"> </div> </body> </html>
示例二:
var data=" { root: [ {name:'1',value:'0'}, {name:'6101',value:'北京市'}, {name:'6102',value:'天津市'}, {name:'6103',value:'上海市'}, {name:'6104',value:'重庆市'}, {name:'6105',value:'渭南市'}, {name:'6106',value:'延安市'}, {name:'6107',value:'汉中市'}, {name:'6108',value:'榆林市'}, {name:'6109',value:'安康市'}, {name:'6110',value:'商洛市'} ] }"; var dataObj=eval("("+data+")");//转换为json对象 alert(dataObj.root.length+"个对象"); for(var i=0;i<dataObj.root.length;i++){ var obj=dataObj.root[i]; alert(obj.Name+"--"+obj.value); }
由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语 句(statement)来执行。
2. 使用Function对象来进行返回解析:它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析
var json = '{"name":"CJ","age":18}'; data = (new Function("", "return " + json))();
附加:
Json与JavaScript对象转换
JSON转javascript对象
//Json转对象1 function JsonToObject(str) { return eval("(" + str + ")"); } //Json转对象2 function strToJson(str){ var json = (new Function("return " + str))(); return json; } //Json转对象3 jQuery工具函数 $.parseJSON()
javascript对象转JSON
//javascript对象转Json function ObjectToJson(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return json2str(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } for (var i in o) arr.push("'" + i + "':" + fmt(o[i])); return '{' + arr.join(',') + '}'; }
以上就是本文的全部内容,希望对大家有所帮助,谢谢对我的支持!