转自;http://www.cnblogs.com/lingyuan/archive/2010/12/18/1909759.html
1.js 中读取JSON的方法探讨
js读取JSON的方法我接触到的有两种:
方法一:函数构造定义法返回
var strJSON = "{name:'json name'}";//得到的JSON
var obj = new Function("return" + strJSON)();//转换后的JSON对象
alert(obj.name);//json name
方法二:js中著名的eval函数
var strJSON = "{name:'json name'}";//得到的JSON
var obj = eval( "(" + strJSON + ")" );//转换后的JSON对象
alert(obj.name);//json name
第二种方法需要注意的是,对象表达式{'name':'json name'}必须用“()”扩住,否则
var strJSON = "{name:'json name'}";
var obj = eval(strJSON);
alert(obj.constructor);//String 构造函数
alert(obj.name);//undefine
必须把对象表达式扩起来eval执行才能生成一个匿名对象!
2. 下面是转自另外一个博客:
http://hi.baidu.com/java513/blog/item/fa3e67301b8e14b35fdf0e42.html
服务端向客户端返回了一串JSON格式的数据。在有些时候,因为某些特殊的原因我们不知道原始的key值,因此我们此时无法象正常一样通过key值,来获取value值。这时我们必须循环读取JSON对象数据。废话少说,来看例子。
服务端后台返回到客户端的JSON格式字符串:var str = '[{"uname":"王强","day":"2010/06/17"},{"uname":"王海云","day":"2010/06/11"}]';
我们把它转换成JSON对象:var jsonList=eval("("+str+")");这时候如果以用断点跟踪查看这个jsonList对象,其实你会发现,他的长度为2,即jsonList.length=2。它的每一项都是一个单独的JSON对象。请看下图:
这时候假设我们不知道"uname"和"day"这两个key值,我们开始对jsonList执行循环操作。
for(var i=0;i<jsonList.length;i++){
for(var key in jsonList[i]){
alert("key:"+key+",value:"+jsonList[i][key]);
}
}
这样我们就可以轻松的获取我所需要的key值和value值了
示例如下:
var languages = {
cn:{
lang: ' ch ' ,
name: " 中文 "
},
en:{
lang: " 英文 " ,
name: " en "
}
};
document.write(languages.cn.name);
< / script>
3. 下面为js遍历json对象:
JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"valu
e/":/"10/"},{/"text/":/"邵家湾/",/"value/":/"13/"}]"}
用js可以写成:
或是
原文地址:http://blog.csdn.net/songylwq/article/details/6047609
4. 另外有个经典介绍json对象的博客:
http://hi.baidu.com/java513/blog/item/840a4bee4966bff4ce1b3ebc.html