Класс JSON Wrapper не десериализация

Sep 23 2020

У меня есть такой JSON (данные удалены по соображениям конфиденциальности.

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

Я написал для него внутренний класс-оболочку вот так:

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

В методе я делаю что-то вроде WrapperUserJson data = (WrapperUserJson)JSON.deserialize(st, WrapperUserJson.class);

Но он всегда возвращает ноль. Я точно знаю, что ему передается JSON, поэтому я его не понимаю. Что мне не хватает?

Ответы

1 sfdcfox Sep 23 2020 at 22:03

Вам не хватает атрибута верхнего уровня user. Вам нужен второй класс-оболочка:

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

Которые затем вы вводите в метод десериализации:

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

Вы можете автоматически сгенерировать код из JSON, используя json2apex , отличный инструмент для быстрого создания Apex из заданного источника JSON.