Класс JSON Wrapper не десериализация
У меня есть такой 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, поэтому я его не понимаю. Что мне не хватает?
Ответы
Вам не хватает атрибута верхнего уровня 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.