我正在尝试读取JSON,并将其值存储在dataVO中。
该dataVO包含ArrayList。
码:
if (jsonObject.get(fld.getName()) != null) {
if (fld.getType() == Integer.class) {
methList[i].invoke(mvo, Integer.parseInt(jsonObject.get(fldName).toString()));
} else if (fld.getType() == String.class) {
methList[i].invoke(mvo, jsonObject.get(fldName).toString());
} else if (fld.getType() == Long.class) {
methList[i].invoke(mvo, Long.valueOf(jsonObject.get(fldName).toString()));
} else if (fld.getType() == ArrayList.class) {
/* HERE!! */
}else {
methList[i].invoke(mvo, jsonObject.get(fldName).toString());
}
}
我不知道如何在/ * HERE中使用methList [i] .invoke! * /。
如果我用
methList[i].invoke(mvo, jsonObject.get(fldName));
要么
methList[i].invoke(mvo, (ArrayList) jsonObject.get(fldName));
发生错误。
错误:
org.json.JSONObject$1 cannot be cast to java.util.ArrayList
如何解决此错误?
最佳答案
首先使用getJSONArray
从json对象获取JSONArray
。然后,由于不存在内置函数,因此需要进行显式迭代才能获得ArrayList。
List<String> listdata = new ArrayList<>();
JSONArray jArray = jsonObject.getJSONArray(fldName);
if (jArray != null) {
for (int i=0;i<jArray.length();i++){
listdata.add(jArray.getString(i));
}
}
methList[i].invoke(mvo, listdata);