Gson: Оставьте отзыв после того, как анализ сделан - PullRequest
0 голосов
/ 27 марта 2020
Приложение

My Android (API 24, java 8) анализирует json файлы в java объектах, используя Gson 2.8.6.

A JSON тестовый объект (фактические более сложный, включая массив):

{
"firstname" : "John",
"lastname" : "Smith",
"age" : 23
}

и тестовый класс java:

public class Person {
    public String firstname;
    public String lastname;
    public int age;

    public Person(String f,String l,int a) {
        firstname = f;
        lastname = l;
        age = a;
    }
}

... который я использую для анализа файлов json в Person объекты:

Gson gson = new Gson();
Person p = gson.fromJson(somePersonText, Person.class);

Согласно Javado c, возникающим при выполнении задач Гсона, должно возникать исключение:

JsonSyntaxException - если json не является допустимым представлением для объект типа classOfT

Но если я дам ему, например, "age" : "23", Gson не выдает исключение, вместо этого он тихо преобразует "23" в int.

Если есть опечатка, например, "firstnam" : "John", firstname заканчивается как null (потому что, конечно, он не может сопоставить «firstnam» с «firstname»), но все равно нет исключения, что позже вызывает проблемы при работе с Person.

Здесь есть ответ об этом здесь :

JSON, который вы даете GSON, равен 100 % полностью действителен. В нем нет синтаксических ошибок. Вот почему вы не получаете JsonSyntaxException.

Хотя он вернет объект User [Person в моем случае] со значениями по умолчанию, поскольку он не может сопоставить ни одно из полей из ввода JSON в поля объекта User.

Этот ответ не касается, как с этим справиться.

Вот почему мой вопрос :

Как мне заставить Gson дать мне какой-то тип обратной связи после разбора? Есть ли способ запросить у Gson «отчет» (и если это просто логическое «ошибка»), так что я могу быть уверен, что он не конвертировал молча между типами или даже не отображался?

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