使用gson将json转换为对象将对象抛出空

时间:2016-04-20 15:30:21

标签: java json gson

我尝试将json转换为对象,但对象总是空的,我认为我对对象的定义有些不对,但我不太确定,我试图转换的json是:

{
    "cotizador": {
        "pagos": [{
            "monto": 163.83,
            "montoTotal": 678.52,
            "primerMonto": 187.03,
            "plazo": 4
        }, {
            "monto": 122.17,
            "montoTotal": 756.22,
            "primerMonto": 145.37,
            "plazo": 6
        }],
        "mensaje": {
            "codigo": 0,
            "descripcion": "Consulta Exitosa."
        }
    }
}

我的主要方法是

String urlWS = "The url that return the json above";
URL url= new URL(urlWS);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
connection.setReadTimeout(30000);

JsonParser jp = new JsonParser();
JsonElement jsonElement = jp.parse(new InputStreamReader((InputStream) connection.getContent()));

Gson gsonOut = new Gson();
Cotizador cotizador=gsonOut.fromJson(jsonElement.getAsJsonObject().get("cotizador"), Cotizador.class);

cotizador 对象始终为空

这是我的对象:

@XmlRootElement(name="cotizador")
public class Cotizador {

    private Mensaje objMensaje;
    private List<Pago> lstPagos;

    public Cotizador() {
        this.objMensaje = new Mensaje();
        this.lstPagos = new ArrayList<Pago>();
    }

    @XmlElement(name="mensaje")
    public Mensaje getObjMensaje() {
        return objMensaje;
    }

    public void setObjMensaje(Mensaje objMensaje) {
        this.objMensaje = objMensaje;
    }

    @XmlElement(name="pagos")
    public List<Pago> getLstPagos() {
        return lstPagos;
    }

    public void setLstPagos(List<Pago> lstPagos) {
        this.lstPagos = lstPagos;
    }
}

@XmlRootElement(name="mensaje")
public class Mensaje {

    private String strDescripcion;
    private int intCodigo;

    public Mensaje() {
        this.strDescripcion="";
        this.intCodigo=0;
    }

    @XmlElement(name="descripcion")
    public String getStrDescripcion() {
        return strDescripcion;
    }

    public void setStrDescripcion(String strDescripcion) {
        this.strDescripcion = strDescripcion;
    }

    @XmlElement(name="codigo")
    public int getIntCodigo() {
        return intCodigo;
    }

    public void setIntCodigo(int intCodigo) {
        this.intCodigo = intCodigo;
    }

}

@XmlRootElement(name="pago")
public class Pago {

    private int intPlazo;
    private double dblMonto;
    private double dblPrimerMonto;
    private double dblMontoTotal;

    public Pago() {
        this.intPlazo = 0;
        this.dblMonto = 0;
        this.dblPrimerMonto = 0;
        this.dblMontoTotal = 0;
    }

    @XmlElement(name="plazo")
    public int getIntPlazo() {
        return intPlazo;
    }

    public void setIntPlazo(int intPlazo) {
        this.intPlazo = intPlazo;
    }

    @XmlElement(name="monto")
    public double getDblMonto() {
        return dblMonto;
    }

    public void setDblMonto(double dblMonto) {
        this.dblMonto = dblMonto;
    }

    public double getDblPrimerMonto() {
        return dblPrimerMonto;
    }

    @XmlElement(name="primerMonto")
    public void setDblPrimerMonto(double dblPrimerMonto) {
        this.dblPrimerMonto = dblPrimerMonto;
    }

    @XmlElement(name="montoTotal")
    public double getDblMontoTotal() {
        return dblMontoTotal;
    }

    public void setDblMontoTotal(double dblMontoTotal) {
        this.dblMontoTotal = dblMontoTotal;
    }
}

有人知道我做错了吗?

提前致谢

0 个答案:

没有答案
相关问题