2014-04-04 58 views
0

我想要訪問JSON響應中的圖像,但是我需要訪問的字段是唯一或相當隨機的id值。我們正在從服務器獲取這些數據,所以我們無法對ID進行硬編碼。無法訪問JSON中的字段

的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

你能提供更多的細節嗎? –

回答

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 -operator遍歷徽標對象的屬性並獲取具有unique_id的屬性。

+0

這有效!非常感謝你。你是一個傳奇。 – batsta13

+0

我還有一個問題。我編輯了上面的問題。 – batsta13

+0

在你的代碼中你有'var l = item.assets.logo'。有了這個,你可以使用:var url = item.assets.logo [theid] .url'來訪問url。 – phylax

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 
       } 
      } 
     } 
    }] 
}; 
+0

對不起,我們沒有正確解釋問題。我們實際上是從服務器獲取這些數據,並且不能硬編碼,因爲我們不知道它們是什麼。有沒有辦法通過JSON迭代並獲取id,不管它是什麼。 – batsta13

+0

可以將id字段作爲索引來處理,例如var foo = obj.value [0] .assets.logo [0] .url; – batsta13