2015-11-26 3 views
1

У меня есть этот JSON:Как преобразовать объект в массив с помощью gson

{"datosCliente":{"adeudoAdicional":"","aplicacionMinimaMonedero":0,"canalVentaPoliza":"Call Center","celular":"","clienteId":763483,"codigoError":0,"correo":"","disponibleDisposicion":0,"disponibleGlobal":0,"disposicionMaxima":0,"disposicionMinima":0,"mensajeError":"Operacion exitosa","mensajePoliza":"Poliza Vigente","monedero":82.5,"montoAtrasado":0,"montoDeuda":0,"montoLineaPrestamo":0,"movimientoPermitido":0,"nombre":"MIRIAM NOHEMI MARTINEZ ESCOBEDO","plazo":0,"polizaColorAdvertencia":"#009933","prestamas":"","promesas":{"acumulado":56.26,"fecha":"30-nov-15","monto":56.26},"prospectoPrestamas":0,"puntos":0,"seguro":0,"vigenciaPoliza":"23 de Junio del 2015 al 23 de Junio del 2016"}} 

Это JSON объект содержит свойство, называемое promesas, который должен быть List объектов, однако, когда он возвращает один объект результат является возвращается как один объект. То, что я действительно хочу это:

"promesas":[{"acumulado":56.26,"fecha":"30-nov-15","monto":56.26}] 

Это мой код:

@GET 
@Path("/validacionTarjeta/{tarjeta}/{comercioId}/{tipo}") 
@Produces("application/json") 
public DatosCliente validacionTarjeta(@PathParam("tarjeta")String tarjeta,@PathParam("comercioId")int comercioId,@PathParam("tipo")int tipo){ 
    /* 
     -Monedero     tipo=1 
     -Cancelaciones    tipo=2 
     -Disposiciones    tipo=3 
     -Pagos      tipo=4 
     -Boletos senda    tipo=5 
     -Boletos omnibus   tipo=6 
     -Tiempo aire y servicios tipo=7 
     -Prestarjeta    tipo=8 
     -PrestaMa$     tipo=9 
    */ 
    DatosCliente datosCliente = null; 
    try { 
     if(tipo==1){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setMontoDeuda(rs.getDouble("montoDeuda")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setNombre(rs.getString("nombre")); 
        datosCliente.setMonedero(rs.getDouble("monedero")); 
        datosCliente.setProspectoPrestamas(rs.getInt("prospectoPrestamas")); 
        datosCliente.setPuntos(rs.getDouble("puntos")); 
        datosCliente.setAplicacionMinimaMonedero(rs.getDouble("aplicacionMinimaMonedero")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
        datosCliente.setAdeudoAdicional(rs.getString("adeudoAdicional")); 
       } 
      } 
     }else if(tipo==2){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setProspectoPrestamas(rs.getInt("prospectoPrestamas")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
       } 
      } 
     }else if(tipo==3){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setMovimientoPermitido(rs.getInt("movimientoPermitido")); 
        datosCliente.setAdeudoAdicional(rs.getString("adeudoAdicional")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
        datosCliente.setDisposicionMaxima(rs.getDouble("disposicionMaxima")); 
        datosCliente.setDisposicionMinima(rs.getDouble("disposicionMinima")); 
        datosCliente.setSeguro(rs.getInt("seguro")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setNombre(rs.getString("nombre")); 
        datosCliente.setMonedero(rs.getDouble("monedero")); 
        datosCliente.setProspectoPrestamas(rs.getInt("prospectoPrestamas")); 
        datosCliente.setCorreo(rs.getString("correo")); 
        datosCliente.setCelular(rs.getString("celular")); 
        datosCliente.setDisponibleGlobal(rs.getDouble("disponibleGlobal")); 
        datosCliente.setDisponibleDisposicion(rs.getDouble("disponibleDisposicion")); 
       } 
      } 
     }else if(tipo==4){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setNombre(rs.getString("nombre")); 
        datosCliente.setMonedero(rs.getDouble("monedero")); 
        datosCliente.setProspectoPrestamas(rs.getInt("prospectoPrestamas")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
        datosCliente.setAdeudoAdicional(rs.getString("adeudoAdicional")); 
        datosCliente.setMontoAtrasado(rs.getDouble("montoAtrasado")); 
       } 
      } 
      if(cs.getMoreResults()){ 
       rs=cs.getResultSet(); 
       PromesaPago promesaPago=null; 
       List<PromesaPago> lista=new ArrayList<PromesaPago>(); 
       while(rs.next()){ 
        promesaPago=new PromesaPago(); 
        promesaPago.setFecha(rs.getString("fecha")); 
        promesaPago.setMonto(rs.getDouble("monto")); 
        promesaPago.setAcumulado(rs.getDouble("montoacumulado")); 
        lista.add(promesaPago); 
       } 
       datosCliente.setPromesas(lista); 
      } 
     }else if(tipo==5){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setNombre(rs.getString("nombre")); 
        datosCliente.setMonedero(rs.getDouble("monedero")); 
        datosCliente.setProspectoPrestamas(rs.getInt("prospectoPrestamas")); 
        datosCliente.setCorreo(rs.getString("correo")); 
        datosCliente.setCelular(rs.getString("celular")); 
        datosCliente.setDisponibleGlobal(rs.getDouble("disponibleGlobal")); 
        datosCliente.setMovimientoPermitido(rs.getInt("movimientoPermitido")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
        datosCliente.setAdeudoAdicional(rs.getString("adeudoAdicional")); 
        datosCliente.setDisposicionMinima(rs.getDouble("disposicionMinima")); 
        datosCliente.setDisposicionMaxima(rs.getDouble("disposicionMaxima")); 
       } 
      } 
     }else if(tipo==6){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setNombre(rs.getString("nombre")); 
        datosCliente.setMonedero(rs.getDouble("monedero")); 
        datosCliente.setProspectoPrestamas(rs.getInt("prospectoPrestamas")); 
        datosCliente.setCorreo(rs.getString("correo")); 
        datosCliente.setCelular(rs.getString("celular")); 
        datosCliente.setDisponibleGlobal(rs.getDouble("disponibleGlobal")); 
        datosCliente.setMovimientoPermitido(rs.getInt("movimientoPermitido")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
        datosCliente.setAdeudoAdicional(rs.getString("adeudoAdicional")); 
        datosCliente.setDisposicionMinima(rs.getDouble("disposicionMinima")); 
        datosCliente.setDisposicionMaxima(rs.getDouble("disposicionMaxima")); 
       } 
      } 
     }else if(tipo==7){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setNombre(rs.getString("nombre")); 
        datosCliente.setProspectoPrestamas(rs.getInt("prospectoPrestamas")); 
        datosCliente.setDisponibleGlobal(rs.getDouble("disponibleGlobal")); 
        datosCliente.setMovimientoPermitido(rs.getInt("movimientoPermitido")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
        datosCliente.setAdeudoAdicional(rs.getString("adeudoAdicional")); 
        datosCliente.setDisposicionMinima(rs.getDouble("disposicionMinima")); 
       } 
      } 
     }else if(tipo==8){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setNombre(rs.getString("nombre")); 
        datosCliente.setMonedero(rs.getDouble("monedero")); 
        datosCliente.setMovimientoPermitido(rs.getInt("movimientoPermitido")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
        datosCliente.setAdeudoAdicional(rs.getString("adeudoAdicional")); 
        datosCliente.setMontoLineaPrestamo(rs.getDouble("montoLinea")); 
        datosCliente.setPlazo(rs.getInt("plazo")); 
       } 
      } 
     }else if(tipo==9){ 
      conn.open(); 
      cs=query.SPCON_VALIDATARJETA(conn, tarjeta, comercioId, tipo); 
      rs=cs.getResultSet(); 
      if(rs.next()){ 
       datosCliente=new DatosCliente(); 
       if(rs.getInt("codigoError")!=0){ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
       }else{ 
        datosCliente.setMensajeError(rs.getString("mensajeError")); 
        datosCliente.setCodigoError(rs.getInt("codigoError")); 
        datosCliente.setClienteId(rs.getInt("clienteId")); 
        datosCliente.setNombre(rs.getString("nombre")); 
        datosCliente.setMonedero(rs.getDouble("monedero")); 
        datosCliente.setMovimientoPermitido(rs.getInt("movimientoPermitido")); 
        datosCliente.setVigenciaPoliza(rs.getString("vigenciaPoliza")); 
        datosCliente.setMensajePoliza(rs.getString("mensajePoliza")); 
        datosCliente.setCanalVentaPoliza(rs.getString("canalVentaPoliza")); 
        datosCliente.setPolizaColorAdvertencia(rs.getString("polizaColorAdvertencia")); 
        datosCliente.setAdeudoAdicional(rs.getString("adeudoAdicional")); 
        datosCliente.setMontoLineaPrestamo(rs.getDouble("montoLinea")); 
        datosCliente.setPlazo(rs.getInt("plazo")); 
        datosCliente.setPrestamas(rs.getString("tarjetaPrestamas")); 
       } 
      } 
     }else{ 
      datosCliente=new DatosCliente(); 
      datosCliente.setMensajeError("Tipo incorrecto"); 
      datosCliente.setCodigoError(99); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
     logger.error(e); 
    }finally{ 
     try { 
      if(cs!=null){ 
       cs.close(); 
       rs.close(); 
       conn.close(); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
      logger.error(e); 
     } 
    } 
    return datosCliente; 
} 

и это класс, который имеет список внутри:

@XmlRootElement 
public class DatosCliente { 

    private String mensajeError; 
    private int codigoError; 
    private String nombre; 
    private double montoDeuda; 
    private double monedero; 
    private double aplicacionMinimaMonedero; 
    private String adeudoAdicional; 
    private double puntos; 
    private int prospectoPrestamas; 
    private int clienteId; 
    private String mensajePoliza; 
    private String polizaColorAdvertencia; 
    private String vigenciaPoliza; 
    private String canalVentaPoliza; 
    private int movimientoPermitido; 
    private int seguro; 
    private double disponibleGlobal; 
    private double disposicionMinima; 
    private double disposicionMaxima; 
    private double disponibleDisposicion; 
    private String celular; 
    private String correo; 
    private double montoAtrasado; 
    private List<PromesaPago> promesas; 
    private double montoLineaPrestamo; 
    private int plazo; 
    private String prestamas; 

    public DatosCliente() { 
     this.mensajeError=""; 
     this.codigoError=0; 
     this.nombre=""; 
     this.montoDeuda=0; 
     this.monedero=0; 
     this.aplicacionMinimaMonedero=0; 
     this.adeudoAdicional=""; 
     this.puntos=0; 
     this.prospectoPrestamas=0; 
     this.clienteId=0; 
     this.mensajePoliza=""; 
     this.polizaColorAdvertencia=""; 
     this.vigenciaPoliza=""; 
     this.canalVentaPoliza=""; 
     this.movimientoPermitido=0; 
     this.seguro=0; 
     this.disponibleGlobal=0; 
     this.disposicionMinima=0; 
     this.disposicionMaxima=0; 
     this.disponibleDisposicion=0; 
     this.celular=""; 
     this.correo=""; 
     this.montoAtrasado=0; 
     this.promesas=new ArrayList<PromesaPago>(); 
     this.montoLineaPrestamo=0; 
     this.plazo=0; 
     this.prestamas=""; 
    } 
} 

И это Класс:

@XmlRootElement 
public class PromesaPago { 

    private String fecha; 
    private double monto; 
    private double acumulado; 

    public PromesaPago() { 
     this.fecha=""; 
     this.monto=0; 
     this.acumulado=0; 
    } 
} 

Каждый класс имеет свои собственные геттеры и сеттеры

+0

Ниже приведен пример http://thegeekyland.blogspot.com/2015/11/serializing- и-десериализации-JSON-from.html – Arlind

ответ

1

Вы можете сделать это несколькими способами.

Первый способ заключается в следующем:

ArrayList<PromesaPago> result = new ArrayList<>(); 
    JSONObject object=new JSONObject(json); 
       JSONArray dataArray=object.getJSONArray("promesas"); 
       for(int n = 0; n < dataArray.length(); n++) 
       { 
        JSONObject object = dataArray.getJSONObject(n); 
        result.add(gson.fromJson(object.toString(), PromesaPago.class)); 
       } 

Во-вторых, очиститель, способ заключается в следующем:

ArrayList<PromesaPago> result = new ArrayList<>(); 
try { 
      JSONObject object =new JSONObject(json); 
      result = gson.fromJson(posts.getString("promesas"), new TypeToken<List<PromesaPago>>(){}.getType()); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
Смежные вопросы