Как gson отображает ключи JSON с полями в классах Java при десериализации JSON - PullRequest
0 голосов
/ 26 сентября 2018

Я уже давно ищу это, но мне все еще неясно.У меня есть файл JSON, который выглядит следующим образом:

{
  "Name" : "Foo Bar",
  "Grade" : "Some Grade",
  "Org" : "Some Org"
}

Для десериализации этого JSON (с использованием gson) я создал класс Java с именем StudentDetails.java, который выглядит следующим образом:

public class StudentDetails
{
    public String name;
    public String grade;
    public String org;
}

Теперь у меня есть пара вопросов относительно этого:

  1. Будет ли gson автоматически сопоставлять поля в StudentDetails.java с соответствующими ключами, даже если поля начинаются со строчных букв, а ключи начинаются с прописных букв в JSONфайл.Я искал @SerializedName, но мой код работает, даже не используя его.Напротив, если я использую что-то вроде @SerializedName("Name) с полем имени, после десериализации оно получает нулевое значение.Я сейчас так растерялся.
  2. Будет ли десериализация работать даже без методов получения и установки?В Джексоне вы пишете методы setter и getter.
  3. Если приведенное выше верно, работает ли оно даже в случае приватных полей?

1 Ответ

0 голосов
/ 26 сентября 2018
  1. Я уверен в этом , но я думаю, что регистр имеет значение только после первого символа, потому что вы обычно не начинаете имя поля с заглавной буквыперсонаж. Да GSON автоматически сопоставит поля.

  2. Да GSON не нужен геттер / установщик (https://stackoverflow.com/a/6203975/4622620)

  3. Да GSON может обрабатывать частные поля, поскольку использует отражения (https://stackoverflow.com/a/28927525/4622620)

...