Classe wrapper JSON non deserializzazione

Sep 23 2020

Ho alcuni JSON in arrivo che sono così (i dati vengono rimossi per motivi di privacy.

{"user":{"id":"","email":"","first_name":"","last_name":""}, "STUFF I DONT WANT HERE"}

Ho scritto una classe wrapper interna per questo in questo modo:

    public with sharing class WrapperUserJson {
        public String id;
        public String email;
        public String first_name;
        public String last_name;
    }

In un metodo sto facendo qualcosa di simile WrapperUserJson data = (WrapperUserJson)JSON.deserialize(st, WrapperUserJson.class);

Ma restituisce sempre null. So per certo che gli viene passato il JSON, quindi non lo capisco. Cosa mi sto perdendo?

Risposte

1 sfdcfox Sep 23 2020 at 22:03

Ti manca l'attributo di primo livello user. Hai bisogno di una seconda classe wrapper:

public class WrapperResponseJson {
    WrapperUserJson user;
}
public class WrapperUserJson {
    public String id;
    public String email;
    public String first_name;
    public String last_name;
}

Che poi inserisci nel metodo deserialize:

WrapperResponseJson data = (WrapperResponseJson)JSON.deserialize(st, WrapperResponseJson.class);

Puoi generare automaticamente codice da JSON utilizzando json2apex , un ottimo strumento per creare rapidamente Apex da una determinata origine JSON.