在 javascript 中访问级联 JSON
Posted
技术标签:
【中文标题】在 javascript 中访问级联 JSON【英文标题】:Access Cascaded JSON in javascript 【发布时间】:2012-10-01 21:06:43 【问题描述】:如果我有以下 JSON 对象,我如何使用 javascript 访问 survey.id
(例如 1)?我正在使用 Backbone / json.stringify / object.parse
[
"class": "org.example.UserBooking",
"id": 1,
"booking":
"class": "Booking",
"id": 1
,
"profile":
"class": "Profile",
"id": 3
,
"survey":
"class": "Survey",
"id": 1
,
"tslot":
"class": "TimeSlot",
"id": 5
]
??
我不知道如何访问这个“调查”ID,因为它是级联的。例如,如果我想访问“ID”,我会这样做:
var obj = $.parseJSON(JSON.stringify(userbooking));
alert(obj.id);
谢谢
感谢您的回复。当我尝试以下行时:
var obj = JSON.parse(JSON.stringify(userbooking)); 警报(obj.Survey.id);
我收到以下错误:
Uncaught TypeError: Cannot read property 'id' of undefined –
【问题讨论】:
obj.survey.id 应该基于这个结构工作,不是吗? obj[0].survey.id 应该可以解决您的问题 【参考方案1】:尝试像这样访问调查中的 id
obj[0].survery.id
当前上下文中的json数据是这样括起来的
[ ]..
所以它是一个对象数组,因为它是我们试图访问的第一个对象..
应该是 obj[0]. 而不仅仅是 obj.
CHECK DEMO
【讨论】:
【参考方案2】:不要使用 jQuery,只需使用 JSON.parse()
。然后,使用obj.survey.id
获取它。
var obj = JSON.parse(userbookingstring);
alert(obj[0].survey.id);
【讨论】:
他为什么要使用JSON.parse()
?好像已经是JSON了?
您好,感谢您的回复。当我尝试以下行时: var obj = JSON.parse(JSON.stringify(userbooking));警报(obj.Survey.id);我收到以下错误:未捕获的类型错误:无法读取未定义的属性“id”
JavaScript 区分大小写。 'obj.Survey' 没有定义,'obj.survey' 是。
我仍然得到同样的错误:/ Uncaught TypeError: Cannot read property 'id' of undefined
另外,你为什么使用 JSON.parse(JSON.stringify(userbooking))?这需要一个 Object,将其转换为 JSON 字符串,然后将其转换回 Object。这是不必要的。以上是关于在 javascript 中访问级联 JSON的主要内容,如果未能解决你的问题,请参考以下文章