【问题标题】:Access Cascaded JSON in javascript在 javascript 中访问级联 JSON
【发布时间】: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 应该可以解决您的问题

标签: javascript jquery json backbone.js cascading


【解决方案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。这是不必要的。
    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多