2017-03-10 6 views
1

Ich versuche, ein JSON zu lesen, und speichern Sie seinen Wert in DataVO. Dieses dataVO enthält ArrayList.Wie konvertieren JSONObject in 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()); 
    } 
} 

Ich weiß nicht, wie methList verwenden [i] .invoke in/* HIER !! * /.

Wenn ich

methList[i].invoke(mvo, jsonObject.get(fldName)); 

oder

methList[i].invoke(mvo, (ArrayList) jsonObject.get(fldName)); 

ist ein Fehler aufgetreten.

ERROR:

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

Wie kann ich diesen Fehler beheben?

Antwort

1

Verwenden Sie zuerst getJSONArray, um JSONArray von JSON-Objekt zu erhalten. Dann ist eine explizite Iteration erforderlich, um ArrayList zu erhalten, da keine eingebaute Funktion existiert.

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

habe ich versucht, den Code, aber der folgende Fehler aufgetreten: org.json.JSONException: Wert null bei option_list vom Typ org.json.JSONObject $ 1 kann nicht –

+0

Wahrscheinlich das Problem gelöst zu haben scheint JSONArray umgewandelt werden (org .json.JSONException). Wenn ich jedoch mit der Get-Funktion auf die Aktivität zugreife, tritt der Fehler auf: java.lang.ClassCastException: java.lang.String kann nicht in com.top_adv.myapplication1.DataVO.Ref_listVO umgewandelt werden –

+0

Oh, ich habe es gelöst! Danke :) –

Verwandte Themen