Gson:从JSON到java对象的内部对象列表

时间:2016-02-03 01:19:24

标签: serialization

我有:

public class RequisicionImpresion {


private List<Files> archivos;

private String impresora;

... // getter & setters

}


    public class FileDto {

private String  lote;

private Long    idDoc;

private String  nombre;

private String  ruta;

//Getter & setters

}

我正在获得JSON:

{"archivos":[{"lote":"JULIO_20160125_001","idDoc":9038,"nombre":"/siat/anexo/pruebas/Anexo 1.pdf","ruta":"/siat/anexo/pruebas/Anexo 1.pdf"},
        {"lote":"JULIO_20160125_001","idDoc":9185,"nombre":"/siat/anexo/pruebas/Anexo 1.pdf","ruta":"/siat/anexo/pruebas/Anexo 1.pdf"},
        {"lote":"JULIO_20160125_001","idDoc":9184,"nombre":"/siat/anexo/pruebas/Anexo 1.pdf","ruta":"/siat/anexo/pruebas/Anexo 1.pdf"},
        {"lote":"JULIO_20160125_001","idDoc":9039,"nombre":"/siat/anexo/pruebas/Anexo 1.pdf","ruta":"/siat/anexo/pruebas/Anexo 1.pdf"}],
        "impresora":"00000061677"}

我需要序列化来获取具有填充值的对象RequisionImpresion。我不知道如何导航元素'archivos'并获得其他元素。

我已经完成了:

nuevaRequsicionImpresion = jsonUtil.convertJsonToObject(json);

其中:

JsonUtil.java 

...
public final T convertJsonToObject(final String json) {
        T valor = null;

        if (json != null) {
            Gson gson = new Gson();

            valor = (T) gson.fromJson(json, new TypeToken<T>() {
            } .getType());
        }

        return valor;
    }

...

但是我得到了例外:

java.lang.ClassCastException:com.google.gson.internal.StringMap无法强制转换为java.io.Serializable

1 个答案:

答案 0 :(得分:0)

在我的实用程序类JsonUtil中,我已经更新了方法:

...
@SuppressWarnings("unchecked")
    public final T convertJsonToObject(final String json, final T clase) {
        T valor = null;

        if (json != null) {
            Gson gson = new Gson();
            valor = (T) gson.fromJson(json, clase.getClass());
        }

        return valor;
    }

...