json 的几种格式及处理

var json = {  contry:{ area:{ man:"12万",  women:"10万" } } };
//方式一:使用eval解析  
var obj = eval(json);  
alert(obj.constructor);
alert(obj.contry.area.women);  

//方式二:使用Funtion函数  
var strJSON = "{name:'json name'}";//得到的JSON  
var obj = new Function("return" + strJSON)();//转换后的JSON对象  
    alert(obj.name);//json name  
    alert(obj.constructor);
      
//复杂一点的json数组数据的解析  
var value1 = [{"c01":"1","c02":"2","c03":"3","c04":"4","c05":"5","c06":"6","c07":"7","c08":"8","c09":"9"}, {"c01":"2","c02":"4","c03":"5","c04":"2","c05":"8","c06":"11","c07":"21","c08":"1","c09":"12"}, {"c01":"5","c02":"1","c03":"4","c04":"11","c05":"9","c06":"8","c07":"1","c08":"8","c09":"2"}];   var obj1 = eval(value1);  
alert(obj1[0].c01); 

//复杂一点的json的另一种形式  
var value2 = {"list":[ {"password":"1230","username":"coolcooldool"}, {"password":"thisis2","username":"okokok"}], "array":[{"password":"1230","username":"coolcooldool"},{"password":"thisis2","username":"okokok"}]};  

var obj2 = eval(value2);  
alert(obj2.list[0].password);


json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?

JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的。

用eval可以解析,并且会弹出对话框,而用JSON.parse()则解析不了。 其实alert并没有什么坏处,可怕的是如果用恶意用户在json字符串中注入了向页面插入木马链接的脚本,用eval也是可以操作的,而用JSON.parse()则不必担心这个问题。

注意:某些低级的浏览器尚不支持JSON.parse(),可以到 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下载。

你可能感兴趣的:(json 的几种格式及处理)