我想将一个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