JSON

2016-04-12 16 views
-1

'daki ilk nesneye erişemiyorum Diğer kılavuzları izlemeyi denedim, ancak hiçbiri çalışmıyor gibi görünüyor.JSON

{ 
    "employees": [{ 
     "occupation": "cook", 
     "id": [{ 
      "address": { 
       "postal_code": 12342, 
       "city": "detroit" 
       }, 
       "children": "none" 
     ], 
} 
} 
      // and so forth, there are more objects in the employees-array 

Benim kod parçacığı şöyle görünür: Bu (pasajı) benzeyen ayrı bir JSON dosyasındaki ilk nesneyi almak istiyorum

$.getJSON(url, function(data) { 
    $.each(data.employees, function(i, emp) { 
     if (this.id.length) { 
      console.log(this[0].address.city); 
     } 
    } 

Ben ilk nesnenin "adresi erişmek istediğiniz ". Eğer ben console.log (this.address [0] .city) yazıyorsam, "çalışanlar" daki her nesneden ilk "şehir" değerlerini alacağım.

Önceden teşekkürler! each() İçinde

+0

basamaklar 'nedir? –

+1

'id' özelliğini kaçırdınız. –

+0

Maalesef, soruyu yüklerken değişkenleri yeniden adlandırdım ve özel olanı unuttum. Düzenlendi. – Jeramo

cevap

1

Doğru sorununuzu anlasalardı, ben ne istediğini düşünüyorum:

data.employees[0].id[0].address.city 

jsfidle

+0

Evet, tam olarak bu! Çabalarınız için çok teşekkür ederim! :) – Jeramo

4

, thisemployee nesneyi ifade edeceğinden, bu yüzden bu kadar console.log() değişiklik gerek:

$.each(data.employees, function(i, emp) { 
    if (this.id.length) { 
     console.log(this.id[0].address.city); 
    } 
}); 
+0

Ayrıca bunu denedim, ancak "çalışanlar" daki her nesneden tüm "şehir" değerlerini almaya devam ediyorum. – Jeramo

+0

Gördüğünüz gibi [bu keman] 'dan (https://jsfiddle.net/5mk61k8c/1/) yukarıdaki gibi,' id 'dizisindeki çoklu nesneler ile bile kesinlikle çalışır. –

3

Neden her blokta emp değişkeni kullanmıyorsun?

$.each(data.employees, function(i, emp) { 
    if (emp.id.length) { 
     console.log(emp.id[0].address.city); 
    } 
} 
+0

Ne yazık ki, "bu" ifadesini "emp" olarak değiştirmek fark yaratmıyor ... – Jeramo

+0

Emp.id.length yerine emp (emp.id [0]) ile kontrol ediyorum (eğer empire erişmek istiyorum). id [0]) – Areca

1

Başlangıçta sizin nesne

{ 
    "employees": [{ 
     "occupation": "cook", 
     "id": [{ 
      "address": { 
       "postal_code": 12342, 
       "city": "detroit" 
       }, 
       "children": "none" 
     ], 
} 
} 

bu kodu denemektir.

$.each(data.employees, function(i, emp) { //each function will able access each employees 
    if (this.id.length) { 
     console.log(this.id[0].address.city); // at each employee get the first element of array id. 
    } 
} 
  1. .each fonksiyon employees dizinin dışarı geçer.
  2. this.id[0] bu, kimlik olarak tanımlanan dizinin ilk elemanına erişebilir. İçinde bir adres nesnesi var.

      "address": { 
           "postal_code": 12342, 
           "city": "detroit" 
           } 
    
  3. this.id[0].address: - Bu kod size adres nesneyi verecektir.

       { 
           "postal_code": 12342, 
           "city": "detroit" 
           } 
    
  4. this.id[0].address.city: - Adres nesnesi içinde artık bu kod parçası kullanarak şehri alacak. Burada ..

    "city": "detroit" 
    

Teşekkür senin Cevap var olacaktır. @Velimir Tchatchevsky yorumlama dayalı