如何将JSONObject转换为ArrayList

时间:2017-03-10 19:24:29

标签: java json arraylist

我正在尝试读取JSON,并将其值存储在dataVO中。 此dataVO包含ArrayList。

CODE:

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));

发生错误。

ERROR:

org.json.JSONObject$1 cannot be cast to java.util.ArrayList

如何解决此错误?

1 个答案:

答案 0 :(得分:3)

首先使用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);