elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Android] web service error Gson parser[Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Android] web service error Gson parser[Solucionado]  (Leído 2,207 veces)
kondrag_X1

Desconectado Desconectado

Mensajes: 157


Ver Perfil
[Android] web service error Gson parser[Solucionado]
« en: 28 Octubre 2015, 16:16 pm »

Hola,

Estoy haciendo un servicio web y me encuentro trabajando con la librería Volley, la verdad que simplifica muchísimo la cosa para trabajar con webservices, pero tengo un error que he conseguido acotarlo a las siguientes líneas.

Cuando lanzo la consulta y el Json responde atiendo la respuesta con un método que todo va correcto hasta el punto donde tengo que extraer los datos con gson.fromJson

El método
Código
  1. private void procesarRespuesta(JSONObject response) {
  2.        try {
  3.            // Obtener atributo "estado"
  4.            String estado = response.getString("estado");
  5.  
  6.            switch (estado) {
  7.                case "1": // EXITO
  8.                    Log.d(TAG, "respuesta exitosa.");
  9.                    // Obtener "arqueta" Json
  10.                    JSONObject mensaje = response.getJSONObject("arqueta");
  11.                    // Parsear con Gson
  12.                    Log.d(TAG, "ParsearGson mensaje: "+mensaje.toString());
  13.                    BeanArqueta arquetas = gson.fromJson(mensaje.toString(), BeanArqueta.class);
  14.                    //presentar en activity
  15.                    updateDatosActivity(arquetas);
  16.                    break;
  17.                case "2": // FALLIDO
  18.                    Log.d(TAG, "respuesta fallida.");
  19.                    String mensaje2 = response.getString("mensaje");
  20.                    Toast.makeText(
  21.                            this,
  22.                            mensaje2,
  23.                            Toast.LENGTH_LONG).show();
  24.                    break;
  25.                default:
  26.                    Log.d(TAG, "respuesta error estado:"+estado);
  27.                    break;
  28.            }
  29.        } catch (JSONException e) {
  30.            e.printStackTrace();
  31.        }
  32.    }
  33.  
el contenido de JSon devuelto es correcto:
Código:
{"estado":1,"arqueta":{"id":"1","insert_time":"2015-10-27 08:40:27","nombre_arqueta":"Arqueta","direccion_arqueta":"74:48:52:44","uuid_sensor1":"0001","uuid_sensor2":"0001","uuid_sensor3":"0001"}}

y cuando queremos obtener el contenido del mensaje como se puede ver en el objeto
JSONObject mensaje es: correcto
Código:
{"id":"1","insert_time":"2015-10-27 08:40:27","nombre_arqueta":"Arqueta","direccion_arqueta":"74:48:52:44","uuid_sensor1":"0001","uuid_sensor2":"0001","uuid_sensor3":"0001"}

y cuando llega a
Código
  1.   BeanArqueta arquetas = gson.fromJson(mensaje.toString(), BeanArqueta.class);
  2.  

salta una excepción en la documentación dice que es porque el objeto que se intenta pasear no correspondo con el objeto Json.

pero como se puede ver el Json contiene los mismos campos que el objeto BeanArqueta

BeanArqueta
Código
  1. public class BeanArqueta
  2. {
  3.    private static String id;
  4.    private static String insert_time;
  5.    private static String nombre_arqueta;
  6.    private static String direccion_arqueta;
  7.    private static String uuid_sensor1;
  8.    private static String uuid_sensor2;
  9.    private static String uuid_sensor3;
  10.  
  11.    public BeanArqueta()
  12.    {
  13.        super();
  14.    }
  15.  
  16.    public static String getId() {
  17.        return id;
  18.    }
  19.  
  20.    public static void setId(String id) {
  21.        BeanArqueta.id = id;
  22.    }
  23.  
  24.    public static String getInsert_time() {
  25.        return insert_time;
  26.    }
  27.  
  28.    public static void setInsert_time(String insert_time) {
  29.        BeanArqueta.insert_time = insert_time;
  30.    }
  31.  
  32.    public static String getNombre_arqueta() {
  33.        return nombre_arqueta;
  34.    }
  35.  
  36.    public static void setNombre_arqueta(String nombre_arqueta) {
  37.        BeanArqueta.nombre_arqueta = nombre_arqueta;
  38.    }
  39.  
  40.    public static String getDireccion_arqueta() {
  41.        return direccion_arqueta;
  42.    }
  43.  
  44.    public static void setDireccion_arqueta(String direccion_arqueta) {
  45.        BeanArqueta.direccion_arqueta = direccion_arqueta;
  46.    }
  47.  
  48.    public static String getUuid_sensor1() {
  49.        return uuid_sensor1;
  50.    }
  51.  
  52.    public static void setUuid_sensor1(String uuid_sensor1) {
  53.        BeanArqueta.uuid_sensor1 = uuid_sensor1;
  54.    }
  55.  
  56.    public static String getUuid_sensor2() {
  57.        return uuid_sensor2;
  58.    }
  59.  
  60.    public static void setUuid_sensor2(String uuid_sensor2) {
  61.        BeanArqueta.uuid_sensor2 = uuid_sensor2;
  62.    }
  63.  
  64.    public static String getUuid_sensor3() {
  65.        return uuid_sensor3;
  66.    }
  67.  
  68.    public static void setUuid_sensor3(String uuid_sensor3) {
  69.        BeanArqueta.uuid_sensor3 = uuid_sensor3;
  70.    }
  71. }
  72.  

A qué se debe el error? no lo entiendo si el objeto Bean tienes los mismos campos que el mensaje.


« Última modificación: 28 Octubre 2015, 20:16 pm por kondrag_X1 » En línea

kondrag_X1

Desconectado Desconectado

Mensajes: 157


Ver Perfil
Re: [Android] web service error Gson parser[Solucionado]
« Respuesta #1 en: 28 Octubre 2015, 20:18 pm »

tengo la mala costumbre de hacer las variables estáticas y el gson no las acepta.cambiando esto se ha solucionado dejo constancia por si algún otro le ocurre lo mismo.
Código
  1. public class BeanArqueta
  2. {
  3.    private String id;
  4.    private String insert_time;
  5.    private String nombre_arqueta;
  6.    private String direccion_arqueta;
  7.    private String uuid_sensor1;
  8.    private String uuid_sensor2;
  9.    private String uuid_sensor3;
  10.  
  11.    public BeanArqueta()
  12.    {
  13.        super();
  14.    }
  15.  
  16.    public static String getId() {
  17.        return id;
  18.    }
  19.  
  20.    public void setId(String id) {
  21.        BeanArqueta.id = id;
  22.    }
  23.  
  24.    public String getInsert_time() {
  25.        return insert_time;
  26.    }
  27.  
  28.    public void setInsert_time(String insert_time) {
  29.        BeanArqueta.insert_time = insert_time;
  30.    }
  31.  
  32.    public String getNombre_arqueta() {
  33.        return nombre_arqueta;
  34.    }
  35.  
  36.    public void setNombre_arqueta(String nombre_arqueta) {
  37.        BeanArqueta.nombre_arqueta = nombre_arqueta;
  38.    }
  39.  
  40.    public String getDireccion_arqueta() {
  41.        return direccion_arqueta;
  42.    }
  43.  
  44.    public void setDireccion_arqueta(String direccion_arqueta) {
  45.        BeanArqueta.direccion_arqueta = direccion_arqueta;
  46.    }
  47.  
  48.    public String getUuid_sensor1() {
  49.        return uuid_sensor1;
  50.    }
  51.  
  52.    public void setUuid_sensor1(String uuid_sensor1) {
  53.        BeanArqueta.uuid_sensor1 = uuid_sensor1;
  54.    }
  55.  
  56.    public String getUuid_sensor2() {
  57.        return uuid_sensor2;
  58.    }
  59.  
  60.    public void setUuid_sensor2(String uuid_sensor2) {
  61.        BeanArqueta.uuid_sensor2 = uuid_sensor2;
  62.    }
  63.  
  64.    public String getUuid_sensor3() {
  65.        return uuid_sensor3;
  66.    }
  67.  
  68.    public void setUuid_sensor3(String uuid_sensor3) {
  69.        BeanArqueta.uuid_sensor3 = uuid_sensor3;
  70.    }
  71. }
  72.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines