Java 解析JSONObject时如何生成容错代码?

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":

目前,我从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": "",
  "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解析;它更强大、更方便。