我想將一個JSON對象(來自一個API)反序列化到它們各自的Java對象中。我正在使用gson庫(對於Android)。事情是,我已經嘗試了好幾天,並且沒有運氣測試了很多種選擇,所以我真的很感謝這一點的幫助。用Gson反序列化一個複雜的JSON(幾個嵌套元素)
*檢索到JSON。所有我從API收到JSONs遵循以下結構:
{
"status_code": 200,
"status_message": "Here the status message",
"result": {
"success": true,
"internalStatusCall": 1,
"response":
/* Can be a JSON object or a JSON array of objects */
}
}
由於所有JSONs的結構收到有異曲同工之處,我想利用這個優勢並擴展對象從JSON映射。
我想的東西,如:
public class TABaseObject {
@SerializedName("status_code")
protected int status_code;
@SerializedName("status_message")
protected String status_message;
protected String type;
public TABaseObject(int status_code, String status_message, String type) {
this.status_code = status_code;
this.status_message = status_message;
this.type = type;
}
}
從此對象擴展,內部對象是:
public class TAResultObject extends TABaseObject{
@SerializedName("exito")
protected boolean exito;
@SerializedName("codigoEstado")
protected int codigoEstado;
public TAResultObject(int status_code, String status_message, boolean exito, int codigoEstado) {
super(status_code, status_message, "resultado");
this.exito = exito;
this.codigoEstado = codigoEstado;
}
@Override
public String toString() {
return super.toString() + " ////// " + "TAResultObject{" +
"exito=" + exito +
", codigoEstado=" + codigoEstado +
'}';
}
,並從該其他對象,我將擴展TAResultObject到通信對象。
我已經嘗試了幾種反序列化方法(TypeAdapterFactory,RuntimeTypeAdapterFactory等),沒有運氣。
是否有任何策略能夠反序列化提到的JSON。我真的很感謝任何幫助。
很難映射提供JSON和頭部的映射。你可能錯過了別的東西補充?.. –
@breo你檢查了我的答案? – Krish