Dapatkan Nilai dengan Kekunci dalam JSONArray

1. Gambaran keseluruhan

JSON adalah format pertukaran data yang bebas bahasa dan bebas bahasa yang digunakan untuk kebanyakan komunikasi pelanggan-pelayan.

JSONObject dan JSONArray adalah dua kelas biasa yang biasanya terdapat di kebanyakan perpustakaan pemprosesan JSON. A JSONObject menyimpan pasangan nilai utama tidak tertib , sama seperti Java Peta pelaksanaan. A JSONArray , di sisi lain, adalah satu urutan yang diperintahkan nilai sama seperti List atau Vector di Jawa.

Dalam tutorial ini, kita akan menggunakan perpustakaan JSON-Java ( org.json ) dan belajar bagaimana memproses JSONArray untuk mengekstrak nilai untuk kunci yang diberikan. Sekiranya diperlukan, kami mempunyai pengenalan mengenai perpustakaan ini.

2. Ketergantungan Maven

Kami akan mula-mula dengan menambahkan kebergantungan di bawah di POM kami:

 org.json json 20180813 

Kita selalu dapat mengetahui versi terbaru JSON-Java di Maven Central.

3. Pembentukan Konteks

Mesej JSON biasanya terdiri daripada objek dan tatasusunan JSON yang mungkin bersarang di antara satu sama lain. A JSONArray objek dikurung dalam tanda kurung siku [] manakala JSONObject dikurung dalam pendakap kerinting {} . Sebagai contoh, mari kita pertimbangkan mesej JSON ini:

[ { "name": "John", "city": "chicago", "age": "22" }, { "name": "Gary", "city": "florida", "age": "35" }, { "name": "Selena", "city": "vegas", "age": "18" } ]

Jelas, ini adalah array objek JSON. Setiap objek JSON dalam array ini mewakili catatan pelanggan kami yang mempunyai nama, usia, dan bandar sebagai atribut atau kuncinya.

4. Memproses JSONArray

Memandangkan JSON di atas, bagaimana jika kita ingin mengetahui nama semua pelanggan kita? Dengan kata lain, diberi kunci, "nama" dalam contoh kita, bagaimana kita dapat mencari semua nilai yang dipetakan ke kunci itu dalam array JSON yang diberikan?

Seperti yang kita ketahui, JSONArray adalah senarai objek JSON. Oleh itu, mari cari semua nilai untuk kunci yang diberikan:

public List getValuesForGivenKey(String jsonArrayStr, String key) { JSONArray jsonArray = new JSONArray(jsonArrayStr); return IntStream.range(0, jsonArray.length()) .mapToObj(index -> ((JSONObject)jsonArray.get(index)).optString(key)) .collect(Collectors.toList()); }

Dalam contoh sebelumnya:

  • Pertama, kita melakukan lelaran keseluruhan senarai objek dalam array JSON
  • Kemudian untuk setiap JSONObject , kita mendapatkan nilai yang dipetakan ke kunci yang diberikan

Juga, kaedah optString () mengembalikan rentetan kosong jika tidak ada kekunci seperti itu.

Semasa memanggil getValuesForGivenKey (jsonArrayStr, "name") di mana jsonArrayStr adalah contoh JSON kami, kami akan mendapat Senarai semua nama sebagai output:

[John, Gary, Selena]

5. Kesimpulan

Dalam artikel ringkas ini, kami belajar bagaimana menguraikan JSONArray untuk mendapatkan semua nilai yang dipetakan untuk kunci yang diberikan. Di sini, kami telah menggunakan perpustakaan JSON-Java (org.json) .

JSON.simple adalah alternatif lain yang serupa dan kuat untuk bekerja dengan JSON di Java. Jangan terokai.

Seperti biasa, kod sumber lengkap boleh didapati di Github.