Classe wrapper JSON non deserializzazione
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
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.