解析JSONObject时如何制作容错代码?

目前,我从像这样的算法中检索到一个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(导入org.json.JSONObject)

但是该行将崩溃。错误消息:

  

原因:org.json.JSONException:instagram没有值

     

E / CrashlyticsCore:调用了意外的方法   AppMeasurement.EventListener:onEvent(java.lang.String,   java.lang.String,android.os.Bundle,java.lang.Long);返回null

那么如何编写可以处理两种情况的代码,无论是具有“ instagram”字段,还是来自传入的json都没有?

yeluogui1236 回答:解析JSONObject时如何制作容错代码?

按照@Pemba Tamang的建议,使用jsonObject.optString("instagram","");gson库,它可以处理json中的错误

,

您可以使用try,赶上它:

try{

        // try to parse ur Json here

    }catch (JSONException e){
        // here you can assign the empty String
    }
本文链接:https://www.f2er.com/3168477.html

大家都在问