在 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的主要内容,如果未能解决你的问题,请参考以下文章

javascript 选择 。动态爱情,级联爱情

javascript 删除猫鼬的级联

javascript 年月日级联菜单

javascript 级联广告缩放

使用 Javascript 获取元素的继承(级联)祖先 CSS 类

VBA访问从级联列表框传递和编辑记录并重新查询列表框