json nesnesinin boyutunu al


234

Ben bir AJAX isteği tarafından döndürülür bir json nesnesi var ve .lengthgeri dönüyor çünkü ben ile bazı sorun yaşıyorum undefined. Sadece doğru kullanıp kullanmadığımı merak ediyorum:

console.log(data.length);
console.log(data.phones.length);

Her ikisi undefinedde geçerli nesneler olsalar bile geri döner .

Güncelleme:
Döndürülen JSON nesnesinin örneği:

{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}

İade edilen JSON'un bir örneğini gönderebilir misiniz?
Joe

Emin değilim, ben değildim. Bence sorunuz da iyi.
Joe

Yanıtlar:


555

Bunun gibi bir şey kullanabilirsiniz

<script type="text/javascript">

  var myObject = {'name':'Kasun', 'address':'columbo','age': '29'}

  var count = Object.keys(myObject).length;
  console.log(count);
</script>

62
@Matt, IE 7 veya 8'de her kodun çalışması zorunlu DEĞİLDİR. Bu yetersiz veya standart olmayan platformlar sadece dezavantajlardır.
Olofu Mark

5
@OlofuMark herkes hangi tarayıcıyı kullandığını seçemez (örn. Kilitli ağlar, kurum içi uygulamalar tarafından kullanılan sürümlü IE DLL bağımlılıkları). Eski tarayıcıları barındırmak önemli bir çaba gerektiriyorsa, onları görmezden gelmek haklı olabilir, ancak bu kadar önemsiz bir durumda bu sadece kaba değildir
tomfumb

7
@OlofuMark Bu sürümleri desteklemek gerekli olmasa da, geliştiriciler ürettikleri kodun belirli sürümlerde ne zaman işe yaramayacağını bilmeli, böylece bunu dikkate alıp almayacaklarına karar verebilirler.
David Navarre

İç içe diziler için JSON gerektirmeyen bir çözüm görmek güzel. JSON'un asıl amacının her şeyin bir nesne olması olduğunu düşündüm.
Healforgreen

nesnelerin uzunluğunu elde etmek için harika bir çözüm
Shaymol Bapary

54

Sorununuz, ilişkisel diziler olarak kullanıldığında bile, nesnelerin dizilerle aynı olmadığı gibi, telefon nesnenizin length özelliğine (döndürdüğünüz JSON'da bir yerde tanımlamazsanız) sahip olmamasıdır. Telefonlar nesnesi bir dizi olsaydı bir uzunluğu olurdu. İki seçeneğiniz var (belki daha fazla).

  1. JSON yapınızı (bunun mümkün olduğunu varsayarak) değiştirin, böylece 'telefonlar'

    "phones":[{"number":"XXXXXXXXXX","type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}]

    (her telefon için 0 dizinli bir dizide döndürüldüğünden kelime numaralı bir tanımlayıcı olmadığını unutmayın). Bu cevapta phones.lengthgeçerli olacak.

  2. Telefon nesnenizde bulunan nesneler arasında yineleme yapın ve ilerledikçe sayın;

    var key, count = 0;
    for(key in data.phones) {
      if(data.phones.hasOwnProperty(key)) {
        count++;
      }
    }
    

Yalnızca yeni tarayıcıları hedefliyorsanız seçenek 2 gibi görünebilir bu


JSON nesnemin jsonObject adlı bir değişkende saklandığı ve yukarıdaki ile aynı JSON'a sahip olduğu göz önüne alındığında, ilk çözümle JSON nesnesinin uzunluğunu nasıl elde ederim: "telefonlar": [{"sayı": "XXXOTX" , "type": "mobile"}, {"number": "XXX LoftX", "type": "mobile"}]
Erick

29

Kullanmayı düşünün underscore.js . Boyutu kontrol etmenize izin verecektir, örneğin:

var data = {one : 1, two : 2, three : 3};
_.size(data);
//=> 3
_.keys(data);
//=> ["one", "two", "three"]
_.keys(data).length;
//=> 3

24

JSON biçiminizi değiştirmeniz gerekmez.

değiştirin:

console.log(data.phones.length);

ile:

console.log( Object.keys( data.phones ).length ) ;

16
var json=[{"id":"431","code":"0.85.PSFR01215","price":"2457.77","volume":"23.0","total":"565.29"},{"id":"430","code":"0.85.PSFR00608","price":"1752.45","volume":"4.0","total":"70.1"},{"id":"429","code":"0.84.SMAB00060","price":"4147.5","volume":"2.0","total":"82.95"},{"id":"428","code":"0.84.SMAB00050","price":"4077.5","volume":"3.0","total":"122.32"}] 
var obj = JSON.parse(json);
var length = Object.keys(obj).length; //you get length json result 4

2
Bu zaten ayrıştırılmış bir json nesnesidir. Yukarıdaki ifadeleri çalıştırırsanız, size 'Json'da beklenmeyen simge o' hatası verir. Json uzunluğunu hesaplamak için doğrudan var length = Object.keys (json) .length yapabilirsiniz.
Aayushi


-3

bunu kullan

//for getting length of object
 int length = jsonObject.length();

veya

//for getting length of array
 int length = jsonArray.length();

6
length () bir JSON nesnesi işlevi değildir
Sunding Wei

-5
$(document).ready(function () {
    $('#count_my_data').click(function () {
        var count = 0;
        while (true) {
             try {
                var v1 = mydata[count].TechnologyId.toString();
                count = count + 1;
            }
            catch (e)
            { break; }
        }
        alert(count);
    });
});

1
listenizdeki öğelerin TechnologyId
bittiğini

1
Bu kod o kadar kötü ki, daha fazla yorum yapmayacağım bile. Oy verildi -1!
Georgi-it
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.