Jadi, saya mendapatkan beberapa nilai JSON dari server tetapi saya tidak tahu apakah akan ada bidang tertentu atau tidak.
Jadi seperti:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}
Dan terkadang, akan ada bidang tambahan seperti:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"club":"somevalue"
}
Saya ingin memeriksa apakah bidang bernama "klub" ada sehingga pada parsing saya tidak akan mendapatkan org.json.JSONException: Tidak ada nilai untuk klub
Jawaban:
Kelas JSONObject memiliki metode bernama "has":
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)
sumber
Integer
tipe?Integer
sebagai kunci terdengar seperti latihan yang buruk. JSON harus dengan kunci String dan nilai apa pun yang Anda butuhkan.Anda dapat memeriksa dengan cara ini di mana 'HAS' - Mengembalikan nilai true jika objek ini memiliki pemetaan nama. Pemetaannya mungkin NULL.
sumber
Anda bisa
JSONObject#has
, memberikankey
input sebagai dan memeriksa apakah metode kembalitrue
ataufalse
. Anda juga bisagunakan
optString
sebagai gantigetString
:sumber
getString
akan mengembalikan string kosong,optString
juga akan mengembalikan string kosong. Asumsi akan membuat Anda percaya bahwa properti tidak tersedia dalam situasi OP.Kamu bisa memakai
has
Tentukan apakah JSONObject berisi kunci tertentu .
Contoh
sumber
sebelum membaca kunci periksa seperti sebelum membaca
definisi fungsi isNull
dokumentasi resmi di bawah tautan untuk
isNull
fungsihttp://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)
sumber
Coba ini
sumber
isNull
sebenarnya untuk memeriksa apakah pemetaan adalah nol, bukan untuk memeriksa ketersediaan anggota json.Cara yang lebih baik, daripada menggunakan kondisional seperti:
adalah dengan menggunakan metode optString () yang ada, seperti ini:
metode optString ("key") akan mengembalikan String kosong jika kunci tersebut tidak ada dan karena itu tidak akan memberikan Anda pengecualian.
sumber
Json memiliki metode yang disebut
containsKey()
.Anda dapat menggunakannya untuk memeriksa apakah kunci tertentu terkandung dalam set Json.
sumber
berfungsi di semua browser saat ini.
sumber
Coba ini:
sumber
Anda dapat mencoba ini untuk memeriksa apakah kunci ada atau tidak:
sumber
Saya hanya menambahkan hal lain, Jika Anda hanya ingin memeriksa apakah ada yang dibuat di JSONObject atau tidak, Anda dapat menggunakan length (), karena secara default ketika JSONObject diinisialisasi dan tidak ada kunci yang dimasukkan, itu hanya memiliki kawat gigi kosong
{}
dan menggunakan telah (Kunci string) tidak masuk akal.Jadi Anda bisa langsung menulis
if (jsonObject.length() > 0)
dan melakukan hal-hal Anda.Selamat belajar!
sumber
Anda dapat menggunakan JsonNode # hasNonNull (String fieldName) , itu mencampur metode has dan verifikasi jika itu adalah nilai nol atau tidak
sumber