2010-01-15 8 views
7

JSON (자바 스크립트) 객체의 요소를 어떻게 참조할까요? 예 : alert (homes.Agents [1] .name);은 JSON (자바 스크립트) 객체의 요소를 참조합니다.

<script> 
    var homes = [ 
{ 
    "Agents" : { 
     "name" : "Bob Barker", 
     "name" : "Mona Mayflower" 
    }, 
    "Listings" : [ 
     { 
      "h_id": "3", 
      "city": "Dallas", 
      "state": "TX", 
      "zip": "75201", 
      "price": "162500" 
     }, 
     { 
      "h_id": "4", 
      "city": "Bevery Hills", 
      "state": "CA", 
      "zip": "90210", 
      "price": "319250" 
     }, 
     { 
      "h_id": "5", 
      "city": "New York", 
      "state": "NY", 
      "zip": "00010", 
      "price": "962500" 
     } 
    ] 
} 

]; 

</script> 

답변

2

개체 속성에 고유 한 이름을 지정해야합니다. 귀하의 예제에서 두 번째 이름 속성은 첫 번째를 덮어 쓰므로 집 [0] .Agents.name은 항상 "Mona Mayflower"가됩니다. 당신이 정렬 일단

, 난 당신이 찾고있는 생각 :

homes[0].Agents.name 
5

귀하의 JSON 구문이 잘못되었습니다. 한 객체에 동일한 키를 두 번 사용할 수 없습니다.

var homes = { 
    "Agents" : [ 
    { "name" : "Bob Barker" }, 
    { "name" : "Mona Mayflower" } 
    ], 
    ... 
} 

는 그런 다음과 같이 에이전트에 액세스 할 수 있습니다 : 다음 link에서 가져온

homes.Agents[1] // => { "name": "Mona Mayflower" } 

// or 

homes.Agents[1].name // => "Mona Mayflower" 
+0

귀하의 보정에 의해 문제의 데이터에 액세스 할 수

"Agents": { "name" : "Bob Barker", "name" : "Mona Mayflower" } 

그런

"Agents": [ {"name" : "Bob Barker"}, {"name" : "Mona Mayflower"} ] 

에 변경해야 유효하지 않은 구문입니다 임의의 키를 사용하려면 매핑 ('{})이 필요합니다. 즉,''Agents ''라인에서 실패합니다 : [''현재 매핑을 정의하지 않고 배열을 정의하고 있기 때문입니다. – Crast

+0

수정 해 주셔서 감사합니다, Crast. 내 코드를 업데이트했습니다. –

0

예 :

var myJSONObject = {"bindings": [ 
     {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, 
     {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, 
     {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} 
    ] 
}; 

"myJSONObject.bindings[0].method" "돌아갑니다 대신 배열이 필요합니다 newURI "

1

잘못된 JSON 에이전트입니다. 객체가 아니라 배열. 이 같은 구조 조정 된 경우 :

"Agents" : [ 
    { "name" : "Bob Barker"}, 
    { "name" : "Mona Mayflower"}] 

은 그럼 당신은 얻을 homes.Agents[1].name를 사용할 수있는 '모나 메이 플라워'에이전트가 두 번째 키를 무시합니다 값이 위의 정확히 아주 좋은 JSON이 경우, 아니다

11

첫번째.

는 당신은 아마 의미 :

"Agents" : [ 
    {"name" : "Bob Barker"}, 
    {"name" : "Mona Mayflower"} 
], 

그런 다음 당신이 목록의 값 중 하나를 얻기 위해, 마찬가지로

homes[0]['Agents'][0]['Name'] 

바와 같이, 제 1 에이전트의 이름을 액세스하는 것, 당신이 유사한 무언가를 할 거라고 받는 사람 :

homes[0]['Listings'][0]['city'] 
- or - 
homes[0].Listings[0].city 

올바른 식별자가있는 곳이면 도트 구문을 사용할 수 있으며 그렇지 않으면 배열 구문.

부수적으로 데이터의 구조는 확실하지 않지만 전체 구조를 배열로 묶는 바깥 수준 인 []을 제거 할 수 있습니다. 그러면 모든 것을 homes[0]['Listings']으로 액세스 할 필요없이 간단히 homes['Listings']으로 액세스 할 수 있습니다.

3

주택은 배열이므로 첫 번째 접근자는 인덱스 기반입니다.

가정 [0]

대리인 이름이 같은 두 개의 키를 포함하는 개체 및 개체이다. 그것은 아니오입니다.이 데이터를 직접 정의하는 경우

, 당신은 당신이

homes[0].Agents[1].name 
관련 문제