Java 解析JSONObject时如何生成容错代码?
目前,我从algolia检索一个JSON对象,如下所示:Java 解析JSONObject时如何生成容错代码?,java,android,json,kotlin,algolia,Java,Android,Json,Kotlin,Algolia,目前,我从algolia检索一个JSON对象,如下所示: { "title": "Manajemen Masjid sesuai sunnah Rasulullah", "address": "Jl. Tebet Utara I No.40, RT.8/RW.2, Tebet Tim., Tebet, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12820, Indonesia", "additionalAddress":
{
"title": "Manajemen Masjid sesuai sunnah Rasulullah",
"address": "Jl. Tebet Utara I No.40, RT.8/RW.2, Tebet Tim., Tebet, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12820, Indonesia",
"additionalAddress": "",
"capacity": 0,
"city": "Jakarta",
"creatorIsVerified": true,
"description": "Dua aplikasi milik Facebook",
"email": "abcd@gmail.com",
"eventID": "000b4e1a-f65e-4d77-83ce-d0770d344d4b",
"eventType": "Kajian Umum",
"_geoloc": {
"lat": -6.2256428,
"lng": 106.8527658
},
"hasBeenApproved": true,
"numberOfContact": "081808664",
"price": 0,
"rankPoint": 300000000,
"speaker": "Syafiq Reza Basalamah",
"venue": "Aql Islamic Center 2",
"website": "http://www.lakuin.id"
}
如您所见,在该记录中,上面的JSON中没有“instagram”字段。但其他记录在JSON中有“instagram”字段。我在Android应用程序中解析JSON时遇到问题,因为并非所有数据都有“instagram”字段
我使用以下代码解析“instagram”字段,如果传入的JSON中没有“instagram”字段,那么我想分配一个空字符串,如下代码所示:
val instagram = jsonObject.get("instagram") as? String ?: ""
jsonObject
数据类型是java类jsonObject
(import org.json.jsonObject)
但那条线会造成碰撞。错误消息:
原因:org.json.JSONException:instagram没有值
E/CrashlyticCore:在上调用了意外的方法
AppMeasurement.EventListener:OneEvent(java.lang.String,
java.lang.String、android.os.Bundle、java.lang.Long);返回空值
那么,如何编写能够处理这两种情况的代码,不管它是否有“instagram”字段,还是没有来自传入json的 正如@Pemba-Tamang所建议的,使用
jsonObject.optString(“instagram”)
或使用gson
库,它可以处理json中的错误
try{
// try to parse ur Json here
}catch (JSONException e){
// here you can assign the empty String
}
尝试使用jonobject.optString(“instagram”和“);如果instagram不存在,则第二个字符串是回退字符串;如果出现任何异常,则始终可以在捕获部分中放入一些代码。您确实应该考虑使用Gson进行JSON解析;它更强大、更方便。