2010-01-15 11 views
7

Jak odnieść się do elementu obiektu JSON (Javascript). exampe: alert (homes.Agents [1] .name);odnoszą się do elementu obiektu JSON (Javascript)

<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> 

Odpowiedz

2

Powinieneś nadać własności obiektu unikalne nazwy. W twoim przykładzie, własność drugiej nazwy zastępuje pierwszą, tak że domy [0] .Agenty.nazwa będą zawsze "Mona Mayflower".

Gdy dojdziesz że sortowane, myślę, że szukasz to:

homes[0].Agents.name 
5

składni JSON jest źle. Nie możesz mieć tego samego klucza dwa razy w obiekcie. Zamiast tego trzeba tablicę:

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

Następnie można uzyskać dostęp do środków tak:

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

// or 

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

swojej korekty jest nieprawidłowa składnia , musi być mapowanie ('{}'), aby używać arbitralnych kluczy. Mianowicie, nie powiedzie się on w linii '" Agenci ": [ponieważ obecnie definiujesz tablicę, a nie mapowanie. – Crast

+0

Dzięki za poprawkę, Crast. Zaktualizowałem swój kod. –

0

przykładem wziętym z poniższego link:

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" zwróci " newURI "

1

Jest to nieprawidłowy agent JSON jest tylko obiekt, a nie tablica. Jeżeli został on przebudowany tak:

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

Następnie można użyć homes.Agents[1].name dostać „Mona Mayflower”

11

To nie jest dokładnie bardzo dobre JSON powyżej tam, w przypadku Agenci cenią sobie drugi klucz zastąpi pierwszy.

Prawdopodobnie oznaczało:

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

Wtedy masz dostęp do nazwy pierwszego środka jako

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

Podobnie, aby uzyskać jedną z wartości z ofert, można by zrobić coś w rodzaju na:

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

Składnia kropek może być używana wszędzie tam, gdzie istnieje ważny identyfikator, w przeciwnym razie musisz użyć składnia tablicowa.

Na marginesie, nie jestem pewien struktury danych, ale możliwe jest, że można wyeliminować zewnętrzny poziom [], który zamyka całą strukturę w tablicy. Wtedy nie musiałbyś mieć dostępu do wszystkiego jako homes[0]['Listings'], a zamiast tego po prostu homes['Listings'].

3

Domy to tablica, więc Twój pierwszy akcesor jest oparty na indeksach.

domów [0]

agentów jest obiekt, i przedmiot zawierający dwa klawisze o tej samej nazwie. To nie jest nie.

Jeśli definiujesz te dane samodzielnie, należy zmienić

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

do

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

Następnie można uzyskać dostęp do danych w wątpliwość przez

homes[0].Agents[1].name