java - gson在反序列化JSON时如何将JSON键映射到Java类中的字段
问题描述
我正在寻找这个已经有一段时间了,但我仍然不清楚。我有一个如下所示的 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;
}
现在我对此有几个问题:
StudentDetails.java
即使 JSON 文件中的字段以小写开头并且键以大写开头,gson 也会自动将字段映射到相应的键。我一直在寻找,@SerializedName
但我的代码甚至没有使用它就可以工作。相反,如果我使用类似@SerializedName("Name)
名称字段的内容,则在反序列化后将其分配为 null。我现在很困惑。- 即使没有 getter 和 setter 方法,反序列化也能工作吗?在 jackson 中,您编写 setter 和 getter 方法。
- 如果上述情况属实,即使在私有字段的情况下也有效吗?
解决方案
我对此很确定,但我认为大小写仅在第一个字符之后才重要,因为您通常不会以大写字符开头的字段名称。 是的,GSON 将自动映射字段。
是的 GSON不需要getter/setter ( https://stackoverflow.com/a/6203975/4622620 )
是的,GSON 可以处理私有字段,因为它使用反射(https://stackoverflow.com/a/28927525/4622620)
推荐阅读
- javascript - 如何检查参数键是否列在泛型类型中?
- python - 兄弟包导入和mypy“没有属性”错误
- python - 如何将 WMTS 磁贴添加到散景图?
- python - Python 严格的字符串替换
- flutter - 使用 DIO 无法将图像上传到服务器
- c# - 服务器如何在 C# 中验证客户端证书
- php - sqlmap不注入(php)
- android - 尝试将音频资产设置为 Android 上的铃声
- apache-spark - 将 Couchbase 数据流式传输到 S3
- javascript - 在 Vercel 上访问“.next/server”。它适用于 Netlify