js读取json数据

 转自;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值了

示例如下:

< script type = " text/javascript "  language = " javascript " >
 
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

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值