无法访问JSON中的字段

时间:2014-04-04 23:52:56

标签: javascript ajax json getjson

我正在尝试访问JSON响应中的图像,但是我需要访问的字段是唯一的ID值,或者是随机的。我们从服务器获取这些数据,因此我们无法对id进行硬编码。

JSON如下:

 { "error" : { "occured" : "false" },
"errors" : [  ],
"executiontime" : 2500,
"metadata" : {  },
"value" : [ { "activity_duration" : "1 hour, ½ day & full day packages",
    "adult_rate_high_period_high_price" : 275,
    "adult_rate_high_period_low_price" : 49,
    "adult_rate_low_period_high_price" : "",
    "adult_rate_low_period_low_price" : "",
    "amenities" : [  ],
    "assets" : { "logo" : { "436209" : { "asset_type" : "image",
                "caption" : "",
                "credit" : "",
                "description" : "",
                "exists" : "true",
                "height" : 82,
                "label" : "Copy of Monarch logo",
                "latitude" : 0,
                "longitude" : 0,
                "market" : "$",
                "o_id" : 3221685,
                "type_o_id" : 2543991,
                "unique_id" : 436209,
                "url" : "http://c0481729.cdn2.cloudfiles.rackspacecloud.com/p-DD951E3E-C7AF-F22C-77E98D299833B38F-2544001.jpg",
                "width" : 220
              } },

我们正在努力为每个设施展示商业标识。为此,我需要访问上面JSON中的url字段。如何访问assest下的url字段。

2 个答案:

答案 0 :(得分:1)

问题是获取徽标436209的ID。

var theid;
var l = obj.value[0].assets.logo
for (var p in l) {
  if (l[p].hasOwnProperty('unique_id')) {
     theid = l[p].unique_id;
     break;
  }
}

这是不可测试的。该idee是使用in - 运算符迭代徽标对象的属性并获得具有unique_id的属性。

答案 1 :(得分:0)

校正:

obj.value[0].assets.logo["436209"].url = 'foo';
// or
var foo = obj.value[0].assets.logo["436209"].url;

这假设您的对象形成良好并继续使用obj.value [0]的更多部分。

具体来说,如果您的对象已完成,可能是这样的:

var obj = {
    "error": { "occured": "false" },
    "errors": [],
    "executiontime": 2500,
    "metadata": {},
    "value": [{
        "activity_duration": "1 hour, ½ day & full day packages",
        "adult_rate_high_period_high_price": 275,
        "adult_rate_high_period_low_price": 49,
        "adult_rate_low_period_high_price": "",
        "adult_rate_low_period_low_price": "",
        "amenities": [],
        "assets": {
            "logo": {
                "436209": {
                    "asset_type": "image",
                    "caption": "",
                    "credit": "",
                    "description": "",
                    "exists": "true",
                    "height": 82,
                    "label": "Copy of Monarch logo",
                    "latitude": 0,
                    "longitude": 0,
                    "market": "$",
                    "o_id": 3221685,
                    "type_o_id": 2543991,
                    "unique_id": 436209,
                    "url": "http://c0481729.cdn2.cloudfiles.rackspacecloud.com/p-DD951E3E-C7AF-F22C-77E98D299833B38F-2544001.jpg",
                    "width": 220
                }
            }
        }
    }]
};