Saya baru saja mulai menggunakan json dengan java. Saya tidak yakin bagaimana mengakses nilai string dalam JSONArray. Misalnya, json saya terlihat seperti ini:
{
"locations": {
"record": [
{
"id": 8817,
"loc": "NEW YORK CITY"
},
{
"id": 2873,
"loc": "UNITED STATES"
},
{
"id": 1501
"loc": "NEW YORK STATE"
}
]
}
}
kode saya:
JSONObject req = new JSONObject(join(loadStrings(data.json),""));
JSONObject locs = req.getJSONObject("locations");
JSONArray recs = locs.getJSONArray("record");
Saya memiliki akses ke "record" JSONArray pada saat ini, tetapi tidak yakin bagaimana saya akan mendapatkan nilai "id" dan "loc" dalam for loop. Maaf jika uraian ini tidak terlalu jelas, saya agak baru dalam pemrograman.
Jawaban:
Sudahkah Anda mencoba menggunakan JSONArray.getJSONObject (int) , dan JSONArray.length () untuk membuat for-loop Anda:
sumber
id
dengan sinplegetInt
seperti bagaimana kita mendapatkan nilai hashmap dengan menentukan kuncinya, lalu mengapa kita harus mengulang dengan for loop? Bukankah iterasi dengan loop membuatid
get ditugaskan keint id
beberapa kali?Sebuah org.json.JSONArray tidak dapat diulang .
Inilah cara saya memproses elemen di net.sf.json.JSONArray :
Bekerja dengan baik ... :)
sumber
JSONArray
tidak dapat diulang.Java 8 ada di pasaran setelah hampir 2 dekade, berikut adalah cara untuk melakukan iterasi
org.json.JSONArray
dengan java8 Stream API.Jika iterasi hanya satu kali, (tidak perlu
.collect
)sumber
.mapToObj
menunjukkan "pengecualian yang tidak tertangani: JSONException".mapToObj(index -> (JSONObject) array.get(index))
, adajsonArray.get(index)
yang berpotensi dapat dibuangJSONException
tetapiJSONException extends RuntimeException
seharusnya baik-baik saja setidaknya pada waktu kompilasiDengan melihat kode Anda, saya rasa Anda menggunakan JSONLIB. Jika itu masalahnya, lihat cuplikan berikut untuk mengubah array json menjadi array java ..
sumber
Jika itu membantu orang lain, saya dapat mengonversi ke array dengan melakukan sesuatu seperti ini,
... atau Anda harus bisa mendapatkan panjangnya
sumber
org.json.JSONObject
memilikitoJSONArray(JSONArray names)
metode danorg.json.JSONArray
memilikitoJSONObject(JSONArray names)
metode tetapi tidak memilikitoArray()
metode.HashMap regs = (HashMap) parser.parse (stringjson);
(String) (( HashMap ) regs.get ("firstlevelkey")). Get ("secondlevelkey");
sumber