【发布时间】:2020-01-26 15:48:18
【问题描述】:
我有一个非常简单的 JSON 类与杰克逊:
public class Hoge {
@JsonProperty("id")
public final int cid;
public Hoge(@JsonProperty("id") aid){
cid = aid;
}
}
我注意到我必须将 @JsonProperty("id") 放在两个地方才能相互转换 JSON 字符串 JSON 对象, 第一个是字段声明,第二个是构造函数的参数。
当我删除第一个 @JsonProperty 时,JSON 键变为“cid”,而不是“id”。但我希望键名是“id”。
当我删除第二个时,我有一个例外:
没有找到适合类型[简单类型,类系列]的构造函数:无法从 JSON 对象实例化(需要添加/启用类型信息?)
我想保留字段名称(代码中的“cid”)和 JSON 键(代码中的“id”)不同。
当我删除构造函数时,我遇到了编译错误,因为 id 必须是“最终的”才能保持不可变。
有谁知道如何删除示例中重复的@JsonProperty?
【问题讨论】:
-
如果要映射名称(代码中的cid,json中的id),则需要两个注解。你真的需要构造函数有参数吗?如果没有,只需将其删除。
-
当我删除构造函数时,我有一个编译错误,因为 id 是“final”...
-
然后去掉final修饰符。或者你需要它吗?两次注释有什么问题?
-
我想保留决赛。我只是想让代码尽可能干净。
-
为什么你认为
final可以让你的代码更干净?