Gson.fromJson не завершается с ошибкой, если некоторые поля не указаны, даже если помечены как @NonNull - PullRequest
4 голосов
/ 30 июня 2019

У меня есть POJO, определенное следующим образом:

@Value
public class Abc {

    @NonNull
    private final String id;

    @NonNull
    private final Integer id2;

    @NonNull
    private final List<String> data;

    @NonNull
    private final String otherData;
}

Когда я делаю,

GSON.fromJson(str, Abc.class);

с str как:

{
"id": "dsada",
"id2": 12,
"data": ["dsadsa"]
}

В этом,нет другого поля данных.Даже тогда GSON.fromJson не терпит неудачу.Почему это так?Тогда, есть ли смысл помечать поле как @NonNull?

1 Ответ

2 голосов
/ 30 июня 2019

Altgough с lombok @Value вы получаете конструктор allArgs, Gson не будет его использовать. Обратите внимание, что lombok сгенерирует для вас конструктор allArg, поэтому не будет никакого конструктора noArg - но это не будет проблемой для Gson (начиная с Gson 2.3.1 - проверьте этот вопрос SO ).

@NonNull аннотация заставит lombok генерировать нулевые проверки внутри конструктора, но этот конструктор не будет вызываться. Вот почему Gson прочтет ваш Json без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...