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
el contenido de JSon devuelto es correcto:
private void procesarRespuesta(JSONObject response) { try { // Obtener atributo "estado" switch (estado) { case "1": // EXITO Log.d(TAG, "respuesta exitosa."); // Obtener "arqueta" Json JSONObject mensaje = response.getJSONObject("arqueta"); // Parsear con Gson Log.d(TAG, "ParsearGson mensaje: "+mensaje.toString()); BeanArqueta arquetas = gson.fromJson(mensaje.toString(), BeanArqueta.class); //presentar en activity updateDatosActivity(arquetas); break; case "2": // FALLIDO Log.d(TAG, "respuesta fallida."); Toast.makeText( this, mensaje2, Toast.LENGTH_LONG).show(); break; default: Log.d(TAG, "respuesta error estado:"+estado); break; } } catch (JSONException e) { e.printStackTrace(); } }
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
BeanArqueta arquetas = gson.fromJson(mensaje.toString(), BeanArqueta.class);
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
public class BeanArqueta { public BeanArqueta() { super(); } return id; } BeanArqueta.id = id; } return insert_time; } BeanArqueta.insert_time = insert_time; } return nombre_arqueta; } BeanArqueta.nombre_arqueta = nombre_arqueta; } return direccion_arqueta; } BeanArqueta.direccion_arqueta = direccion_arqueta; } return uuid_sensor1; } BeanArqueta.uuid_sensor1 = uuid_sensor1; } return uuid_sensor2; } BeanArqueta.uuid_sensor2 = uuid_sensor2; } return uuid_sensor3; } BeanArqueta.uuid_sensor3 = uuid_sensor3; } }
A qué se debe el error? no lo entiendo si el objeto Bean tienes los mismos campos que el mensaje.