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

Java 如何检查jsonobject中对象的返回类型,java,json,Java,Json,在我的代码中,我调用了一个服务。从返回的json对象中,我对一个对象感兴趣。此对象是一个json数组。有时,根据submit中提供的信息,此json数组对象为空或不存在 在从json对象创建对象之前,如何检查json对象中的对象是否为jsonarray类型 JSONObject VODB = (JSONObject) JSONreturnObj.get("VODB"); if (null != VODB.get("KNDV430")){ if (VODB.getJSONArray("KND

在我的代码中,我调用了一个服务。从返回的json对象中,我对一个对象感兴趣。此对象是一个json数组。有时,根据submit中提供的信息,此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

这是我想要避免的

如何调整代码?

替换

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


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

在if条件下,您将从第一个getJSONArray获得该错误。因此,这应该是可行的:

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