Saya telah ditugaskan di perguruan tinggi saya untuk membuat sebuah karya tanpa persiapan apapun dan saya tidak tahu bagaimana menggunakan JSON dengan benar untuk membaca ini:
{ "af": [
["a", "b", "0", "1"],
["0", "1"],
[ ["a","#","0"], [a,0,b], [a, 1, a], ["b", 0,"a"], ["b", "1", "b"], ["0", "0", "0"], ["0", "1", "1"], [1,0,1], [1 ,1, 0] ]
["a"],
["1"]
]
}
Saya sudah mencoba mencari beberapa contoh di internet tetapi tidak tahu cara menggunakan ini. Saya mencoba membuat tugas ini dengan Java dan saya menggunakan perpustakaan Json json-simple. Bisakah seseorang membantu saya? Seperti benar-benar tidak ada petunjuk. Saya akan terus mencari lebih banyak contoh.
Terutama masalah saya adalah bahwa untuk "memiliki" bagian dari json ini saya harus menggunakan jsonObject.get("nama barang"); tetapi satu-satunya nama yang harus saya gunakan dalam fungsi ini adalah "af" ... apakah itu Daftar? aku agak terjebak di sini.
2 jawaban
Teks json Anda tidak valid, karena berisi kunci/nilai yang tidak dikutip.
Anda memiliki dua cara untuk bekerja dengan teks json yang diformat buruk ini:
Pertama
Anda harus terlebih dahulu mengubah json Anda menjadi json yang valid sehingga setiap karakter atau string harus ditempatkan dalam tanda kutip ganda. yaitu
Ini tidak valid : [a, 1 ,b]
Yang ini valid: ["a", 1, "c"]
catatan: karakter yang saya sebutkan adalah apa saja kecuali angka
Maka Anda dapat memanggil jsonArray.getJsonArray(n).getJsonArray(m)
secara rekursif untuk mendapatkan array bersarang di mana n
dan m
adalah indeks.
Kedua
Gunakan fitur Jackson Core Library seperti ALLOW_UNQUOTED_FIELD_NAMES
yang memungkinkan Anda untuk mengurai teks json yang tidak dikutip dengan baik. lihat juga jawaban ini
af
adalah larik json, jadi Anda mungkin harus menggunakan jsonObject.getJsonArray("af")
. Itu akan memberi Anda objek JsonArray
yang dapat Anda baca menggunakan sesuatu seperti jsonArray.getJsonArray(0).getString(0)
(Anda mungkin perlu mengetahui tipe nilai saat runtime dengan JsonValue.getValueType
).