2011-09-25 5 views
1

사실적인 API를 사용하여 위치 데이터를 가져 오는 중입니다. 그들의 편안한 서비스는 다음과 같이 JSON 형식의 데이터를 반환하지만 "일반적인"JSON 형식을 사용하지는 않습니다. 속성 키가 없으며 대신 모든 필드 키를 설명하는 "필드"가 있습니다.사실적인 지리 데이터 사용시 JSON 형식 문제

그래서 내가 필요한 속성을 검색하는 방법은 무엇입니까? 가능한 경우 예를 들어주십시오. 미리 감사드립니다.

{ 
    "response": { 
     "total_rows": 2, 
     "data": [ 
      [ 
       "ZPQAB5GAPEHQHDy5vrJKXZZYQ-A", 
       "046b39ea-0951-4add-be40-5d32b7037214", 
       "Hanko Sushi Iso Omena", 
       60.16216, 
       24.73907 
      ], 
      [ 
       "2TptHCm_406h45y0-8_pJJXaEYA", 
       "27dcc2b5-81d1-4a72-b67e-2f28b07b9285", 
       "Masabi Sushi Oy", 
       60.21707, 
       24.81192 
      ] 
     ], 
     "fields": [ 
      "subject_key", 
      "factual_id", 
      "name", 
      "latitude", 
      "longitude" 
     ], 
     "rows": 2, 
     "cache-state": "CACHED", 
     "big-data": true, 
     "subject_columns": [ 
      1 
     ] 
    }, 
    "version": "2", 
    "status": "ok" 
} 

답변

1

, 나는 내가 참조 할 수 있도록 데이터를 변환 할 것 이름으로 필드 :

var fieldIndex = {} 
for (key in x.response.fields) 
{ 
    fieldIndex[x.response.fields[key]] = key; 
} 

for (key in x.response.data) 
{ 
    alert(x.response.data[key][fieldIndex.name]); 
} 
1
// Field map 
var _subject_key = 0, 
    _factual_id = 1, 
    _name  = 2, 
    _latitude = 3, 
    _longitude = 4; 

// Example: 
alert(_json.response.data[0][_factual_id]); 

데모 : 당신은 필드의 이름을 알고, 데이터가 동일한 순서를 유지하기 위해 보장되어 있지 않은 경우 http://jsfiddle.net/AlienWebguy/9TEJJ/

+0

데이터 어드레싱 깊이가 한 단계 부족하지만 충고는 없습니다. –

+0

Ah thanks - long day;) – AlienWebguy

+0

감사합니다. 둘 다 Javascript 대신 php로 작업하고 있는데, PHP로하는 방법은 무엇입니까? 똑같은가요? – Shichao

0

사실로 일합니다. API 버전 3 베타 버전을 출시했습니다. 버전 3은 원하는대로 속성 키를 결과에 인라인으로 포함하여이. 제점을 직접 해결합니다. (귀하의 질문은 API 버전 2에 적용됩니다. 버전 3으로 업그레이드 할 수 있다면 다른 개선점도 있습니다. ;-)