gson.from Json не может преобразовать строку json в массив - PullRequest
0 голосов
/ 21 июня 2020

В приложении Android, Я пытаюсь преобразовать строку json в массив

 mJsonString = {"J":[{"a":"G-CDS","b":"1"}]};
 ArrayList<CTable_RawData_DataClass> mArrayList = new ArrayList<>();
 Gson gson = new Gson();
 Type mType = new TypeToken<ArrayList<CTable_RawData_DataClass>>(){}.getType();
 mArrayList = gson.fromJson(mJsonString, mType);

Где CTable_RawData_DataClass выглядит следующим образом:

public class CTable_RawData_DataClass {
    String a; // C_ID;
    String b; // C_Data;
    public CTable_RawData_DataClass()
    {
    }

    public String getC_ID() {
        return a;
    }
    public void setC_ID(String name) {
        this.a = name;
    }

    public String getC_Data() {
        return b;
    }
    public void setC_Data(String name) {
        this.b = name;
    }
}

когда mJsonString = [{"a":"G-CDS","b":"1"}]; нет проблем, но

когда mJsonString = {"J":[{"a":"G-CDS","b":"1"}]}; не работает

Как я могу конвертировать {"J":[{"a":"G-CDS","b":"1"}]}?

1 Ответ

1 голос
/ 21 июня 2020

Вам нужно создать POJO следующим образом:

-----------------------------------yourpackage.J.java-----------------------------------

package yourpackage;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class J {

@SerializedName("a")
@Expose
private String a;
@SerializedName("b")
@Expose
private String b;

/**
* No args constructor for use in serialization
*
*/
public J() {
}

/**
*
* @param a
* @param b
*/
public J(String a, String b) {
super();
this.a = a;
this.b = b;
}

public String getA() {
return a;
}

public void setA(String a) {
this.a = a;
}

public String getB() {
return b;
}

public void setB(String b) {
this.b = b;
}

}
-----------------------------------yourpackage.UsablePOJO.java-----------------------------------

package yourpackage;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class UsablePOJO{

@SerializedName("J")
@Expose
private List<J> j = null;

/**
* No args constructor for use in serialization
*
*/
public UsablePOJO() {
}

/**
*
* @param j
*/
public UsablePOJO(List<J> j) {
super();
this.j = j;
}

public List<J> getJ() {
return j;
}

public void setJ(List<J> j) {
this.j = j;
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...