js怎样读取json里面的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js怎样读取json里面的数据相关的知识,希望对你有一定的参考价值。

result=
"rows":["child":0,"count":89,"id":1,"name":"物理环境安
全","objId":0,"parentId":0,"pos":0,"child":0,"count":36,"id":2,"name":"
网络安全","objId":0,"parentId":0,"pos":0,
"child":0,"count":28,"id":3,"name":"设备及软件系统安
全","objId":0,"parentId":0,"pos":0,"child":0,"count":6,"id":5,"name":"管
理安全","objId":0,"parentId":0,"pos":0]
怎样取出里面的值呢

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);

参考技术A 最简单的方法就是将Json字符串转成对象吧,然后通过对象读取数据
JSON.parse方法
参考技术B result.rows[0].child 结果是0 result.rows[0].name 结果是物理环境安全 result.rows[1].name 结果是 网络安全 就这样用的追问

不行啊,出现这样的错误呢
TypeError: result.rows is undefined
这个要怎样解决呢

追答

你贴上来的那个数据 是你的JS代码不。

追问

是啊,这是在控制台输出的数据啊

追答

这个是你打印出来的字符串吧,也就是说 还没有转成JS对象的。

追问

那怎样转呢,上面的两种都不行啊

结果都变成这样的了呢myobj=[object Object]

可以具体写下代码怎样转吗,麻烦你了

追答

你试下 好久没怎么写了 记得是 var myobj = eval('(' + result + ')'); 你试下,不行你看私信。我给你发了个私信。

本回答被提问者采纳

js如何使用for循环往json添加数据?

例:var arr [name:a:,num:1,name:b,num:1,name:c,num:1,name:d,num:1,name:e,num:1,name:f,num:1],
遍历上面这串数组,并往一个新的json赋值
for(var i= 0;i<arr.length;i++)
json[arr[i].name] = arr[i].num

因为json没有push和add的方法, "="会把上一条给覆盖掉
怎样才能做出数组push的那种效果呢

=并不会把上一条覆盖,因为arr[i].name并不一样,相当于给json动态添加不同的属性。结果如下

当然,如果你数组中的那么如果会一样的话,那么就会被覆盖掉。如果是想要往一个新的对象上加,当作它的属性,那么属性名肯定是唯一的。如果你只是单纯的先把数组变成json串的话,可以使用JSON.stringify();,如下

追问

哦,我知道了我的问题出在哪里了,那我问一下
比如 var i = 'name'
json['i'] = '111' json = name:111
那么如何在 json[i] 里添加新元素, 要做成 json = name:name:111 这种效果
json[i][i]并不好用

参考技术A 原型链添加。
Object.prototype.add = function()
这里是你写的add相关方法。

push同理。
参考技术B 没看懂你的问题是什么? 参考技术C 没看懂你要实现啥

以上是关于js怎样读取json里面的数据的主要内容,如果未能解决你的问题,请参考以下文章

Java如何读取网址中的json内容

struts2 怎样读取json数据

怎么用jsp生成json格式数据,然后用js又怎样读取其数据?

json格式如何读取有特殊字符的数据!内详!

c#如何读取json中的值

c# 读取json的问题,JObject不能强转成JArray