在js中如何取出json中的对象的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在js中如何取出json中的对象的值相关的知识,希望对你有一定的参考价值。

现有一个从php端返回的json(变量名为gets):
"code":0,"data":["uid":"689791","username":"vaghyuzhihao","orgid":"627","status":"1","subname":"yuzhihao","roleids":"1","orgcode":"600251","name":"yuzhihao","mapid":"0","passwd":"","siteid":"0","createorgcode":"600251","alarmview":"0"]
请取出data中uid的值

我是这么写的:alert(gets.uid);
返回的是undefined
请问该怎么取 在线等!

二楼少了个括号

var json = eval("("+str+")");

参考技术A 你这个是个字符串。JSON.parse一下就行了 参考技术B var str = "code":0,"data":["uid":"689791","username":"vaghyuzhihao","orgid":"627","status":"1","subname":"yuzhihao","roleids":"1","orgcode":"600251","name":"yuzhihao","mapid":"0","passwd":"","siteid":"0","createorgcode":"600251","alarmview":"0"];
var json = eval(str);
console.log(json.data[0].uid);

一般返回的都是字符串,需要对其对象化

追问

我照你说的做了一下,还是这样的提示


其实alert未处理过的变量时,是一个object,不是string,不用处理也可以,就是找不到uid的值,疯掉了,大神!若何破....

追答var json;
var str = "code":0,"data":["uid":"689791","username":"vaghyuzhihao","orgid":"627","status":"1","subname":"yuzhihao","roleids":"1","orgcode":"600251","name":"yuzhihao","mapid":"0","passwd":"","siteid":"0","createorgcode":"600251","alarmview":"0"];
if(typeof str === 'object')
json = str;

else
json = eval(str);

console.log(json.data[0].uid);

试试这个,判断输入的是否为object,是则直接输出,不是则将其转换成object再输出

本回答被提问者采纳
参考技术C 你前台是用什么接收的?追问

js

追答

2楼正解!

json中怎么取出对象的属性值啊?

java代码:
DaPermitMenu dp = daPermitMenuBiz.getDaPermitMenuById((long)5); HttpServletResponse res = ServletActionContext.getResponse(); res.reset(); res.setContentType("text/html;charset=utf-8"); PrintWriter pw = res.getWriter(); JSONObject ss = JSONObject.fromObject(dp); pw.print(ss); pw.flush(); pw.close(); return null;
js代码: $.ajax( url: "<c:url value='/permission/getTResource.action' />", type: 'POST', dataType: 'text', success: function(data) alert(data); , error: function() alert('err!'); return false; );
我怎么能取出rescourceCode对应的属性值呢??财富值就这些了,不好意思啊

json中取出对象的属性值步骤如下:

1、打开vscode,创建一个测试页面JsonTest.html,用于演示在js中如何获取json对象的属性集合。

2、在测试页面中,定义一个js变量,将其赋值为json格式的字符串,用于模拟从后台返回过来的json字符串值,以及后续转换为json对象,和获取其属性集合。var json = "[\\"Col1\\": \\"Hello\\", \\"Col2\\": \\"World\\", \\"Col1\\": \\"您好\\", \\"Col2\\": \\"世界\\"]"。

3、使用js的eval函数,将json字符串的变量值,转换为json对象。var $json = eval("(" + json + ")");

4、得到json对象之后,使用for-in循环语句,得到json对象的序号,也就是,这个json对象中,还有多少个子对象。

5、因为js是弱类型的语言,并不要求json对象中的每个子对象属性都一样。所以,在得到序号之后,使用Object.keys($json[i]); 就能获取到当前json子对象的属性集合。

6、如果想要获取到json对象的每个具体的列名和值,就需要再加一个for循环,遍历列名,得到列名和值。

参考技术A 如果直接取值可以data['rescourceCode'],但是你必须一个json对象,记住是对象,你现在返回是一个文本字符串,而非对象,你应该修改你的ajax的dataType: 'json',才可以。
如果是遍历json对象:用(for a in data) a为属性名,data[n]为属性值本回答被提问者采纳

以上是关于在js中如何取出json中的对象的值的主要内容,如果未能解决你的问题,请参考以下文章

map中键为对象,用js将map中的键取出时,如何取出对象,以及它的属性

js怎么获取json中的多个对象?

javascript中数组取值的问题,如何取出键值对中的值?

JAVA 取出数组中特定的值

json中怎么取出对象的属性值啊?

json中怎么取出对象的属性值啊?