dapatkan ukuran objek json


235

Saya punya objek json yang dikembalikan oleh permintaan AJAX dan saya mengalami beberapa masalah dengan .lengthkarena itu terus kembali undefined. Hanya ingin tahu apakah saya menggunakannya dengan benar:

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

Mereka berdua kembali undefinedmeskipun mereka adalah objek yang valid.

Pembaruan:
Contoh objek JSON yang dikembalikan:

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

Bisakah Anda memposting sampel JSON yang dikembalikan?
Joe

Saya tidak yakin, bukan saya. Saya pikir pertanyaan Anda juga baik-baik saja.
Joe

Jawaban:


556

Anda dapat menggunakan sesuatu seperti ini

<script type="text/javascript">

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

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

62
@ Matt, BUKAN ini wajib untuk setiap kode untuk bekerja di IE 7 atau 8. Platform yang tidak memadai atau tidak standar ini dilindungi hanyalah kekurangan.
Olofu Mark

5
@OlofuMark tidak semua orang dapat memilih browser mana yang mereka gunakan (mis. Jaringan terkunci, dependensi IE DLL versi yang digunakan oleh aplikasi internal). Jika mengakomodasi browser yang sudah ketinggalan zaman memerlukan upaya yang signifikan maka mengabaikannya dapat dibenarkan, tetapi dalam kasus sepele seperti ini, tidak sopan untuk tidak
tomfumb

7
@OlofuMark Meskipun tidak diperlukan untuk mendukung versi tersebut, pengembang harus tahu kapan kode yang mereka hasilkan tidak akan berfungsi pada versi tertentu sehingga mereka dapat memutuskan apakah akan mempertimbangkannya atau tidak.
David Navarre

Sangat menyenangkan melihat solusi yang tidak memerlukan JSON untuk memiliki array bersarang. Saya pikir inti dari JSON adalah untuk membuat semuanya menjadi objek.
Healforgreen

ini adalah solusi fantastis untuk mendapatkan panjang objek json
Shaymol Bapary

54

Masalah Anda adalah objek ponsel Anda tidak memiliki properti panjang (kecuali jika Anda mendefinisikannya di suatu tempat di JSON yang Anda kembalikan) sebagai objek tidak sama dengan array, bahkan ketika digunakan sebagai array asosiatif. Jika objek ponsel adalah array, ia akan memiliki panjang. Anda memiliki dua opsi (mungkin lebih).

  1. Ubah struktur JSON Anda (dengan asumsi ini mungkin) sehingga 'ponsel' menjadi

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

    (perhatikan tidak ada pengidentifikasi nomor-kata untuk setiap telepon karena dikembalikan dalam array berindeks 0). Dalam tanggapan ini phones.lengthakan valid.

  2. Iterasi melalui objek yang ada dalam objek ponsel Anda dan hitung saat Anda pergi, misalnya

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

Jika Anda hanya menargetkan peramban baru, opsi 2 dapat terlihat seperti ini


Bagaimana saya akan mendapatkan panjang dari objek JSON dengan solusi pertama mengingat bahwa objek JSON saya disimpan dalam variabel yang disebut jsonObject dan saya memiliki JSON yang sama seperti di atas: "telepon": [{"number": "XXXXXXXXXX" , "type": "mobile"}, {"number": "XXXXXXXXXX", "type": "mobile"}]
Erick

29

Pertimbangkan untuk menggunakan underscore.js . Ini akan memungkinkan Anda untuk memeriksa ukurannya yaitu seperti itu:

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

24

Anda tidak perlu mengubah format JSON Anda.

menggantikan:

console.log(data.phones.length);

dengan:

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
Ini adalah objek json yang sudah diuraikan. Jika Anda menjalankan pernyataan di atas, itu akan memberi Anda kesalahan 'Token tidak terduga di Json'. Untuk menghitung panjang json, Anda dapat langsung melakukan var length = Object.keys (json) .length.
Aayushi


-3

gunakan yang ini

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

atau

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

6
length () bukan funtion objek JSON
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
menunggu pengecualian untuk memberi tahu Anda bahwa daftar Anda telah kehabisan elemen adalah ide yang buruk, dan pendekatan ini akan diam-diam memberikan perhitungan yang salah jika ada elemen (bahkan yang terakhir) yang kehilangan TechnologyIdproperti
tomfumb

1
Kode ini sangat buruk, sehingga saya bahkan tidak akan berkomentar lebih lanjut. Terpilih -1!
Georgi-it
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.