2010-01-15 19 views
7

JSON (Javascript) nesnesinin bir öğesine nasıl başvurabilirim? sınavı: uyarı (homes.Agents [1] .name);JSON (Javascript) nesnesinin bir öğeye bakın.

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

cevap

2

Nesne özelliklerinizi benzersiz adlar vermelisiniz. Örneğinizde, ikinci isim özelliği ilk önce üzerine yazmaktadır, böylece evler [0] .Agents.name her zaman "Mona Mayflower" olacaktır. O sıralı aldıktan sonra

, bunu aradığınız düşünüyorum:

homes[0].Agents.name 
5

JSON sözdizimi yanlış. Bir nesnede aynı tuşa iki kez sahip olamazsınız.

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

Sonra şöyle ajanları erişebilirsiniz: Aşağıdaki link alınan

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

// or 

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

Kişisel düzeltme yoluyla söz konusu veriye ulaşabilir

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

Sonra

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

olarak değişmelidir geçersiz sözdizimi , keyfi anahtarları kullanmak için bir eşleme ('{}') olması gerekir. Yani, "Aracılar" satırında başarısız olur: [çünkü bir diziyi değil, bir diziyi tanımladığınız için. – Crast

+0

Düzeltme için teşekkürler, Crast. Kodumu güncelledim. –

0

Örnek:

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" "dönecektir Bunun yerine, bir dizi ihtiyaç newURI "

1

Bu geçersiz JSON Agent'lar sadece bir nesne, bir dizi değil. Böyle yeniden yapılandırılmıştır ise:

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

Sonra almak için homes.Agents[1].name işe yarayabilir Mona Mayflower 'Ajanlar ikinci anahtar geçersiz kılar değer orada yukarıda tam olarak çok iyi JSON durumda değil

11

ilk.

Muhtemelen geliyordu:

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

Sonra listelerindeki değerlerinden birini almak için Benzer

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

olarak ilk ajanın adını erişmek istiyorum, sen benzer bir şey yapacağını için: geçerli bir tanımlayıcı olduğu her yerde

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

nokta sözdizimi başka kullanmak gerekir, kullanılabilir dizi sözdizimi.

Bir yan not olarak, verilerin yapısından emin değilim, ancak tüm yapınızı bir dizinin içine alan [] dış düzeyini ortadan kaldırmanız mümkündür. O zaman herşeye homes[0]['Listings'] ve bunun yerine sadece homes['Listings']'a erişmeniz gerekmeyecekti.

3

Evler bir dizidir, bu nedenle ilk erişimciniz dizin temellidir.

ev [0]

Maddeler aynı adlı iki anahtar içeren bir nesne ve nesne olup. Bu hayır-hayır.Bu verileri kendiniz tanımlıyorsanız

, size

homes[0].Agents[1].name 
İlgili konular