JSON Wrapper Class no deserialización
Tengo un JSON que es como este (datos eliminados por razones de privacidad.
{"user":{"id":"","email":"","first_name":"","last_name":""}, "STUFF I DONT WANT HERE"}
Escribí una clase contenedora interna como esta:
public with sharing class WrapperUserJson {
public String id;
public String email;
public String first_name;
public String last_name;
}
En un método estoy haciendo algo como WrapperUserJson data = (WrapperUserJson)JSON.deserialize(st, WrapperUserJson.class);
Pero siempre devuelve nulo. Sé a ciencia cierta que el JSON se le está pasando, así que no lo entiendo. ¿Qué me estoy perdiendo?
Respuestas
Falta el atributo de nivel superior user. Necesitas una segunda clase contenedora:
public class WrapperResponseJson {
WrapperUserJson user;
}
public class WrapperUserJson {
public String id;
public String email;
public String first_name;
public String last_name;
}
Que luego alimenta en el método deserializar:
WrapperResponseJson data = (WrapperResponseJson)JSON.deserialize(st, WrapperResponseJson.class);
Puede generar código automáticamente desde JSON usando json2apex , una gran herramienta para crear rápidamente Apex a partir de una fuente JSON determinada.