如何将属性ArrayList <string>或ArrayList <integer>或ArrayList <myclass>从JSON对象转换为java对象?

时间:2017-10-15 17:23:07

标签: java json oop arraylist

我在编程方面很陌生。 我试图用JSON将对象保存到txt中。 但是当我尝试将JSON对象传递给构造函数时,我遇到了问题。

我有这门课。

public class Aluno {
protected String matricula;
protected ArrayList<Integer> concluidas;
protected ArrayList<Integer> cursando;
protected ArrayList<Notas> notas;

我使用此方法将其转换为JSON

public JSONObject toJson(){
JSONObject json = new JSONObject();
json.put("matricula",this.matricula);
json.put("concluidas",this.concluidas);
json.put("notas",this.notas);
return json; }

问题出在我的构造函数中:

public Aluno(JSONObject json) {
    this.matricula = json.getString("matricula");
    this.concluidas = (ArrayList<Integer>) json.get("concluidas");

    this.notas = (ArrayList<Notas>) json.get("notas");


    this.cursando = (ArrayList<Integer>) json.get("cursando");
}

我在这里收到错误

this.concluidas = (ArrayList<Integer>) json.get("concluidas");

错误:线程中的异常&#34; main&#34; java.lang.ClassCastException:json.JSONArray无法强制转换为java.util.ArrayList

ArrayList cursando和ArrayList notas相同。

1 个答案:

答案 0 :(得分:0)

ArrayList<Integer> concluidas = new ArrayList<Integer>();     
JSONArray jArray = (JSONArray)json.get("concluidas");; 
if (jArray != null) { 
   for (int i=0;i<jArray.length();i++){ 
    listdata.add(jArray.getInt(i));
   } 
} 

同样,您也可以转换其他JSONArrays。