JSON Wrapper Class no deserialización

Sep 23 2020

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

1 sfdcfox Sep 23 2020 at 22:03

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.