【发布时间】:2019-03-02 05:09:17
【问题描述】:
我正在寻找这个已经有一段时间了,但我仍然不清楚。我有一个如下所示的 JSON 文件:
{
"Name" : "Foo Bar",
"Grade" : "Some Grade",
"Org" : "Some Org"
}
为了反序列化这个 JSON(使用 gson),我创建了一个名为 StudentDetails.java 的 Java 类,如下所示:
public class StudentDetails
{
public String name;
public String grade;
public String org;
}
现在我有几个问题:
- 是否会自动将
StudentDetails.java中的字段映射到相应的键,即使JSON 文件中的字段以小写开头并且键从大写开始。我一直在寻找@SerializedName,但我的代码甚至不用它就可以工作。相反,如果我使用带有名称字段的@SerializedName("Name)之类的东西,它会在反序列化后被分配为 null。我现在很困惑。 - 即使没有 getter 和 setter 方法,反序列化也能工作吗?在 jackson 中,您编写 setter 和 getter 方法。
- 如果上述情况属实,即使在私有字段的情况下也有效吗?
【问题讨论】:
-
第二个它可以在没有 getter 和 setter 的情况下在 gson 中工作,第三个甚至它的私有它也可以用于序列化和反序列化。
-
首先它会区分大小写,但是如果您使用 @SerializedName 进行注释,即使您可以像这样使用 @SerializedName(value="name", alternate={"Name ,它也适用于序列化和反序列化", "NAME"})
标签: java json gson json-deserialization