Classe de wrapper JSON non désérialisation
J'ai du JSON qui arrive comme ça (données supprimées pour des raisons de confidentialité.
{"user":{"id":"","email":"","first_name":"","last_name":""}, "STUFF I DONT WANT HERE"}
J'ai écrit une classe de wrapper interne pour cela comme ceci:
public with sharing class WrapperUserJson {
public String id;
public String email;
public String first_name;
public String last_name;
}
Dans une méthode, je fais quelque chose comme WrapperUserJson data = (WrapperUserJson)JSON.deserialize(st, WrapperUserJson.class);
Mais il renvoie toujours null. Je sais pertinemment que le JSON lui est transmis, donc je ne comprends pas. Qu'est-ce que je rate?
Réponses
Il vous manque l'attribut de niveau supérieur user. Vous avez besoin d'une deuxième classe wrapper:
public class WrapperResponseJson {
WrapperUserJson user;
}
public class WrapperUserJson {
public String id;
public String email;
public String first_name;
public String last_name;
}
Que vous alimentez ensuite dans la méthode de désérialisation:
WrapperResponseJson data = (WrapperResponseJson)JSON.deserialize(st, WrapperResponseJson.class);
Vous pouvez générer automatiquement du code à partir de JSON à l'aide de json2apex , un excellent outil pour créer rapidement Apex à partir d'une source JSON donnée.