0
I have a Json like this, and within the entity "purchase", I receive an object with the purchase id, and then the information I need to access, I have already generated the classes, however my object that every name change item is becoming null
{
"Pedido" :
[
{
"compra" : {
"107884" : {
"produto" : [
{
"Codigo_barra" : "",
"Prod_nome" : "I",
"Sec_id" : "4364",
"Dep_id" : "1190",
"Preco_real" : "25.00",
"Qtd" : "1"
},
{
"Codigo_barra" : "1233211",
"Prod_nome" : "",
"Sec_id" : "4377",
"Dep_id" : "1193",
"Preco_real" : "91.00",
"Qtd" : "1"
}
],
"Hora" : "1164242534",
"Valor_entrada" : null,
"Cielo" : null,
"Valor_bonus" : null,
"Bonus_desconto" : null,
"DataFinal" : "2011-07-09 00:00:00",
"cliente" : {
"PESnome" : "",
"PESddd1" : "018",
"PESnascdia" : "",
"PEStel1" : "",
"PEScpf" : "",
"PESemail" : ""
},
"Valor_desconto" : "0.00",
"Numero_etiqueta" : null,
"Lista_casamento" : null,
"Loja_id" : "155",
"Revendedor_id" : null,
"Total" : null,
"Valor_frete" : "11.40",
"pagamento" : {
"CCCparcela" : "1",
"CCCtipo_cartao" : "",
"forma_de_pagamento" : "",
"CCCnum_cartao" : ""
},
"Mobile" : "0",
"Parceiro" : "-",
"Esitef" : null,
"Compra_id" : "107884",
"ENTtipofrete" : "N",
"Status_atual" : "13",
"Valor_tarifa" : "0.00",
"enderecos" : {
"endereco_cobranca" : {
"PEScidade" : "",
"PEScep" : "19360000",
"PESuf" : "SP",
"PESbairro" : "CENTRO",
"PESlogradouro" : "",
"PESnumero" : "857"
},
"endereco_entrega" : {
"ENTbairro" : "",
"ENTuf" : "SP",
"ENTcidade" : "",
"ENTnumero" : "985",
"ENTlogradouro" : "",
"ENTcep" : "19360000",
"ENTtipo_end" : "Endereço"
}
},
"Data" : "2011-07-09",
"Braspag" : null,
"TpPessoa" : "F",
"HoraGMT" : "Thu Nov 23 00:42:14 2006"
}
}
},
{
"compra" : {
"1652264" : {
"produto" : [
{
"Codigo_barra" : "",
"Prod_nome" : "",
"Sec_id" : "4375",
"Dep_id" : "1192",
"Preco_real" : "14.39",
"Qtd" : "1"
}
],
"Hora" : "1273684863",
"Valor_entrada" : null,
"Cielo" : null,
"Valor_bonus" : null,
"Bonus_desconto" : null,
"DataFinal" : "2010-05-12 14:25:42",
"cliente" : {
"PESnome" : "",
"PESddd1" : "21",
"PESnascdia" : "1981-08-19",
"PEStel1" : "",
"PEScpf" : "",
"PESemail" : ""
},
"Valor_desconto" : "0.00",
"Numero_etiqueta" : null,
"Lista_casamento" : null,
"Loja_id" : "155",
"Revendedor_id" : null,
"Total" : "110.20",
"Valor_frete" : "95.80",
"pagamento" : {
"CCCnomecartao" : "Fabiana Campos",
"CCCparcela" : "2",
"CCCtipo_cartao" : "",
"forma_de_pagamento" : "",
"CCCnum_cartao" : "",
"CCCvalidade_ano" : "2013",
"CCCvalidade_mes" : "05"
},
"Mobile" : "0",
"Parceiro" : "-",
"Esitef" : null,
"Compra_id" : "1652264",
"ENTtipofrete" : "S",
"Status_atual" : "1",
"Valor_tarifa" : "0.00",
"enderecos" : {
"endereco_cobranca" : {
"PEScidade" : "",
"PEScep" : "",
"PESuf" : "RJ",
"PESbairro" : "",
"PESlogradouro" : "",
"PESnumero" : "313"
},
"endereco_entrega" : {
"ENTbairro" : "",
"ENTuf" : "RJ",
"ENTcidade" : "",
"ENTnumero" : "313",
"ENTlogradouro" : "",
"ENTcep" : "25080260",
"ENTtipo_end" : "Endereço"
}
},
"Data" : "2010-05-12",
"Braspag" : null,
"TpPessoa" : "F",
"HoraGMT" : "Wed May 12 17:21:03 2010"
}
}
}
]
}
I’m using GSON to deserialize.
I’ve tried to:
Type mapType = new TypeToken<Map<Integer, CompraNum> >() {}.getType();
Map<Integer, CompraNum> result= gson.fromJson(output, mapType);
and declare in my purchasing entity:
private Map<Integer, CompraNum> compraNum = new HashMap<Integer, CompraNum>();
Follow my classes:
public class Compra {
private Map<Integer, CompraNum> compraNum = new HashMap<Integer, CompraNum>();
public Compra() {
}
public Map<Integer, CompraNum> getCompraNum() {
return compraNum;
}
public void setCompraNum(Map<Integer, CompraNum> compraNum) {
this.compraNum = compraNum;
}
}
public class CompraNum {
@SerializedName("produto")
@Expose
private List<Produto> produto = null;
@SerializedName("Hora")
@Expose
private String hora;
@SerializedName("Valor_entrada")
@Expose
private Object valorEntrada;
@SerializedName("Cielo")
@Expose
private Object cielo;
@SerializedName("Valor_bonus")
@Expose
private Object valorBonus;
@SerializedName("Bonus_desconto")
@Expose
private Object bonusDesconto;
@SerializedName("DataFinal")
@Expose
private String dataFinal;
@SerializedName("cliente")
@Expose
private Cliente cliente;
@SerializedName("Valor_desconto")
@Expose
private String valorDesconto;
@SerializedName("Numero_etiqueta")
@Expose
private Object numeroEtiqueta;
@SerializedName("Lista_casamento")
@Expose
private Object listaCasamento;
@SerializedName("Loja_id")
@Expose
private String lojaId;
@SerializedName("Revendedor_id")
@Expose
private Object revendedorId;
@SerializedName("Total")
@Expose
private String total;
@SerializedName("Valor_frete")
@Expose
private String valorFrete;
@SerializedName("pagamento")
@Expose
private Pagamento pagamento;
@SerializedName("Mobile")
@Expose
private String mobile;
@SerializedName("Parceiro")
@Expose
private String parceiro;
@SerializedName("Esitef")
@Expose
private Object esitef;
@SerializedName("Compra_id")
@Expose
private String compraId;
@SerializedName("ENTtipofrete")
@Expose
private String eNTtipofrete;
@SerializedName("Status_atual")
@Expose
private String statusAtual;
@SerializedName("Valor_tarifa")
@Expose
private String valorTarifa;
@SerializedName("enderecos")
@Expose
private Enderecos enderecos;
@SerializedName("Data")
@Expose
private String data;
@SerializedName("Braspag")
@Expose
private Object braspag;
@SerializedName("TpPessoa")
@Expose
private String tpPessoa;
@SerializedName("HoraGMT")
@Expose
private String horaGMT;
...
public class PedidoPendente {
@SerializedName("Pedido")
@Expose
private List<Pedido> pedido = null;
public PedidoPendente() {
}
...
public class CompraNum {
@SerializedName("produto")
@Expose
private List<Produto> produto = null;
@SerializedName("Hora")
@Expose
private String hora;
@SerializedName("Valor_entrada")
@Expose
private Object valorEntrada;
@SerializedName("Cielo")
@Expose
private Object cielo;
@SerializedName("Valor_bonus")
@Expose
private Object valorBonus;
@SerializedName("Bonus_desconto")
@Expose
private Object bonusDesconto;
@SerializedName("DataFinal")
@Expose
private String dataFinal;
@SerializedName("cliente")
@Expose
private Cliente cliente;
@SerializedName("Valor_desconto")
@Expose
private String valorDesconto;
@SerializedName("Numero_etiqueta")
@Expose
private Object numeroEtiqueta;
@SerializedName("Lista_casamento")
@Expose
private Object listaCasamento;
@SerializedName("Loja_id")
@Expose
private String lojaId;
@SerializedName("Revendedor_id")
@Expose
private Object revendedorId;
@SerializedName("Total")
@Expose
private String total;
@SerializedName("Valor_frete")
@Expose
private String valorFrete;
@SerializedName("pagamento")
@Expose
private Pagamento pagamento;
@SerializedName("Mobile")
@Expose
private String mobile;
@SerializedName("Parceiro")
@Expose
private String parceiro;
@SerializedName("Esitef")
@Expose
private Object esitef;
@SerializedName("Compra_id")
@Expose
private String compraId;
@SerializedName("ENTtipofrete")
@Expose
private String eNTtipofrete;
@SerializedName("Status_atual")
@Expose
private String statusAtual;
@SerializedName("Valor_tarifa")
@Expose
private String valorTarifa;
@SerializedName("enderecos")
@Expose
private Enderecos enderecos;
@SerializedName("Data")
@Expose
private String data;
@SerializedName("Braspag")
@Expose
private Object braspag;
@SerializedName("TpPessoa")
@Expose
private String tpPessoa;
@SerializedName("HoraGMT")
@Expose
private String horaGMT;
....
Any idea how to solve?
I don’t know if that
JSON
deserialize correctly. Note, you need an entityPedido
, who will have a list ofCompra
s, which should have all relevant attributes. If you really want to convert direct toCompra
will not succeed. And another thing, you have an attribute with name"107884"
within the array, which is supposed to contain the purchase items. This structure is wrong, and IMO will not work. Try to rewrite thisJSON
.– Gustavo Cinque