Почему ты возвращаешь мне нулевых детей? - PullRequest
0 голосов
/ 27 марта 2020

Я использую библиотеку GSON 2.6.1 (для Java 1.6, так как это старое приложение).

Я получаю данные из API, но хочу восстановить объект с помощью GSON, он возвращает один из атрибутов (список) с нулевыми объектами.

Что я делаю не так?

Мой код:

public class ListarResponse implements Serializable{

    private static final long serialVersionUID = -1451345915213315934L;
    private String codigo;
    private String descripcion;
    private List<Propiedad> documentos;

    public ListarResponse(){
    };

    public ListarResponse(String codigo, String descripcion, List<Propiedad> documentos) {
        super();
        this.codigo = codigo;
        this.descripcion = descripcion;
        this.documentos = documentos;
    }

    public String getCodigo() {
        return codigo;
    }
    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }
    public String getDescripcion() {
        return descripcion;
    }
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    public List<Propiedad> getDocumentos() {
        return documentos;
    }
    public void setDocumentos(List<Propiedad> documentos) {
        this.documentos = documentos;
    }
    public static long getSerialversionuid() {
        return serialVersionUID;
    }
}

    public ListarResponse listarDocumentosFilenet(ListarRequest request,URL endpoint,String method) {
        ListarResponse response = null;
        try {
            url = endpoint;
            conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod(method);
            Gson g = new Gson();
            String requestJSON = g.toJson(request);
            OutputStream os = conn.getOutputStream();
            os.write(requestJSON.getBytes("UTF-8"));
            os.close();
            if (conn.getResponseCode() != 200) {
                log.error("Ocurrio un error con la peticion HTTP, terminó con codigo: " + conn.getResponseCode());
                throw new RuntimeException("Ocurrio un error con la peticion HTTP, terminó con codigo: "
                        + conn.getResponseCode());
            }else{
                InputStream in = new BufferedInputStream(conn.getInputStream());
                String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
                response = g.fromJson(result, ListarResponse.class);
                System.out.println(result);
                in.close();
            }
            conn.disconnect();
        } catch (Exception e) {
            conn.disconnect();
            System.out.println("Exception in NetClientGet:- " + e);
        }
        return null;
    }

В этой части ответа = g .from Json (результат, ListarResponse.class) ;, это:

Изображение

Json Ответ:

{
    "codigo": 0,
    "descripcion": "Documentos listados correctamente.",
    "documentos": [
        {
            "propiedades": [
                {
                    "nombre": "DateCreated",
                    "valor": "2020-02-11T04:58:46.980"
                },
                {
                    "nombre": "DocumentTitle",
                    "valor": "PreacuerdoPrestamoHipotecario"
                },
                {
                    "nombre": "Id",
                    "valor": "{05F00622-498A-423B-99D0-A210C2DE11FA}"
                },
                {
                    "nombre": "OD_FechaEmision",
                    "valor": "2018-04-13T12:00:00.000"
                },
                {
                    "nombre": "OD_IdTipoDoc",
                    "valor": "1323"
                },
                {
                    "nombre": "OD_LegajoAlta",
                    "valor": "L0647764"
                },
                {
                    "nombre": "OD_LegajoDigitalizacion",
                    "valor": "L0647764"
                },
                {
                    "nombre": "OD_NombreImagen",
                    "valor": "PreacuerdoPrestamoHipotecario"
                },
                {
                    "nombre": "POD_IdHostMulti",
                    "valor": "1234"
                },
                {
                    "nombre": "POD_ProcesoMulti",
                    "valor": "0011|02|1-9IU4OVD"
                }
            ]
        },
        {
            "propiedades": [
                {
                    "nombre": "DateCreated",
                    "valor": "2020-01-17T02:12:57.107"
                },
                {
                    "nombre": "DocumentTitle",
                    "valor": "PreacuerdoPrestamoHipotecario"
                },
                {
                    "nombre": "Id",
                    "valor": "{74CA29A2-3AC7-45F4-BF6F-132D44258F27}"
                },
                {
                    "nombre": "OD_FechaEmision",
                    "valor": "2018-04-13T12:00:00.000"
                },
                {
                    "nombre": "OD_IdTipoDoc",
                    "valor": "1323"
                },
                {
                    "nombre": "OD_LegajoAlta",
                    "valor": "L0647764"
                },
                {
                    "nombre": "OD_LegajoDigitalizacion",
                    "valor": "L0647764"
                },
                {
                    "nombre": "OD_NombreImagen",
                    "valor": "PreacuerdoPrestamoHipotecario"
                },
                {
                    "nombre": "POD_IdHostMulti",
                    "valor": "1234"
                },
                {
                    "nombre": "POD_ProcesoMulti",
                    "valor": "0011|02|1-9IU4OVD"
                }
            ]
        }
    ]
}

Я добавляю изображение на тот случай, если JSON не видно.

Image2

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Мальчики, прежде всего спасибо за помощь. Я решил это, у меня были неправильно отображены объекты, а также у меня были неправильные имена свойств. Из того, что я вижу, GSON грешит на названия свойств.

Я оставляю свой код ниже без методов получения и установки:

Отец Класс:

private static final long serialVersionUID = -1451345915213315934L;
private String codigo;
private String descripcion;
private List<Propiedades> documentos;
private List<String> listaId;

public ListarResponse(){
};

public ListarResponse(String codigo, String descripcion, List<Propiedades> documentos, List<String> listaId) {
    super();
    this.codigo = codigo;
    this.descripcion = descripcion;
    this.documentos = documentos;
    this.listaId = listaId;
}

public ListarResponse(String codigo, String descripcion, List<Propiedades> documentos) {
    super();
    this.codigo = codigo;
    this.descripcion = descripcion;
    this.documentos = documentos;
}

Ниже, дети, списки списков.

класс Пьеды (дети):

private static final long serialVersionUID = 3767703122966629139L;
private String propiedad;
private String valor;
private String operando;
private String nombre;
private List<Propiedad> propiedades;

public Propiedades(){
};

public Propiedades(String valor, String nombre) {
    super();
    this.valor = valor;
    this.nombre = nombre;
}

public Propiedades(List<Propiedad> props) {
    super();
    this.propiedades = props;
}

public Propiedades(String propiedad, String valor, String operando) {
    super();
    this.propiedad = propiedad;
    this.valor = valor;
    this.operando = operando;
}

класс Пропьеды (дети):

private static final long serialVersionUID = 3767703122966629139L;
private String nombre;
private String valor;

public Propiedad(){
};

public Propiedad(String nombre, String valor) {
    this.nombre = nombre;
    this.valor = valor;
}

public String getNombre() {
    return nombre;
}
public void setNombre(String nombre) {
    this.nombre = nombre;
}
public String getValor() {
    return valor;
}
public void setValor(String valor) {
    this.valor = valor;
}
public static long getSerialversionuid() {
    return serialVersionUID;
}
0 голосов
/ 27 марта 2020

Поле documentos не является списком Propiedad объектов, где Propiedad является классом с полями nombre и valor.

documentos является List<Foo> ( с 2 Foo объектами в этом образце JSON), а Foo 1 имеет поле с именем propiedades, которое является List<Propiedad>.

1) Foo - это, конечно, имя для вас.

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