在我的代码中,我呼叫服务。从返回的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。
我要避免的事情。
我应该如何修改我的代码?
答案 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()方法的源代码。