2014-04-04 3 views
0

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이다. 이렇게하려면 위 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; 
    } 
} 

이것은 해결되지 않았습니다. 이데올로기는 in- 연산자를 사용하여 로고 객체의 속성을 반복하고 unique_id 인 성욕을 얻는 것입니다.

+0

그게 !! !! 고맙습니다. 당신은 전설입니다. – batsta13

+0

다른 질문이 있습니다. 위의 질문을 편집했습니다. – batsta13

+0

코드에는'var l = item.assets.logo'가 있습니다. 이것으로 URL에 접근 할 수 있습니다 :'var url = item.assets.logo [theid] .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

죄송합니다. 문제를 제대로 설명하지 않았습니다. 우리는 실제로이 데이터를 서버에서 가져오고 있으며 그 ID가 무엇인지 모르기 때문에 ID를 하드 코어화할 수 없습니다. JSON을 반복하고 ID가 무엇이든 관계없이 이드를 가져올 수있는 방법이 있습니까? – batsta13

+0

id 필드를 인덱스로도 처리 할 수 ​​있습니다 (예 : var foo = obj.value [0] .assets.logo [0] .url; – batsta13

관련 문제