如何检查jsonobject中对象的返回类型

时间:2019-01-10 08:39:03

标签: java json

在我的代码中,我呼叫服务。从返回的json对象中,我对一个对象感兴趣。该对象是一个json数组。有时,根据提交中提供的信息,此json数组对象为空或不存在。

在从中创建对象之前,如何检查json对象中的对象是否为jsonarray类型?

JSONObject VODB = (JSONObject) JSONreturnObj.get("VODB");
 if (null != VODB.get("KNDV430")){
  if (VODB.getJSONArray("KNDV430") instanceof JSONArray){
   JSONArray KNDV430 = VODB.getJSONArray("KNDV430");
   customer.setCustResp((String) ((JSONObject)KNDV430.get(0)).get("responsible"));
 }
}

现在我在服务器日志中收到一条消息:

org.json.JSONException:JSONObject [“ KNDV430”]不是JSONArray。

我要避免的事情。

我应该如何修改我的代码?

3 个答案:

答案 0 :(得分:2)

替换

if (VODB.getJSONArray("KNDV430") instanceof JSONArray)

使用

if (VODB.get("KNDV430") instanceof JSONArray)

答案 1 :(得分:1)

在if的情况下,您会从第一个getJSONArray获得该错误。所以这应该工作:

JSONObject VODB = (JSONObject) JSONreturnObj.get("VODB");
if (null != VODB.get("KNDV430")){
    if (VODB.get("KNDV430") instanceof JSONArray){
        JSONArray KNDV430 = VODB.getJSONArray("KNDV430");
        ...
    }
}

答案 2 :(得分:0)

您可以查看JSONObject.getJSONArray()方法的源代码。