gson 如何在反序列化 JSON 时将 JSON 键与 Java 类 中的字段映射

How does gson maps JSON keys with the fields in Java classes while deserializing the JSON

我搜索这个已经有一段时间了,但我还是不清楚。我有一个 JSON 文件,看起来像这样:

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

为了反序列化此 JSON(使用 gson),我创建了一个名为 StudentDetails.java 的 Java class,如下所示:

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

现在我有几个问题:

  1. 即使 JSON 文件中的字段以小写开头,键以大写开头,gson 是否会自动将 StudentDetails.java 中的字段映射到相应的键。我一直在寻找 @SerializedName 但我的代码甚至没有使用它就可以工作。相反,如果我在名称字段中使用 @SerializedName("Name) 之类的东西,它会在反序列化后分配给 null。我现在很困惑。
  2. 即使没有 getter 和 setter 方法,反序列化也能工作吗?在杰克逊你写 setter 和 getter 方法。
  3. 如果以上是正确的,即使在私有字段的情况下它也有效吗?
  1. 我很确定这个但我认为大小写只在第一个字符之后才重要,因为您通常不会以字段名称开头带有大写字符。 GSON会自动映射字段。

  2. GSON 不需要 getter/setter ()

  3. 是的 GSON可以处理私有字段,因为它使用了反射()