Classe de wrapper JSON non désérialisation

Sep 23 2020

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

1 sfdcfox Sep 23 2020 at 22:03

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.