一尘不染

杰克逊(Jackson)不变龙目岛注释课

java

创建类的首选方法是

  • 一成不变的
  • 可以使用Jackson进行序列化/反序列化
  • 易于阅读且样本量低

最好是,我希望这样的工作:

@Data(onConstructor = @__(@JsonCreator))

然后将所有字段都设为private final。但是,它甚至不编译(我不确定为什么)。使用

@AllArgsConstructor(onConstructor = @__(@JsonCreator))

将编译但仅产生

InvalidDefinitionException: No serializer found for class

阅读 224

收藏
2020-12-03

共1个答案

一尘不染

添加 ConstructorProperties

  • 用以下行在适当的位置创建lombok.config文件: lombok.anyConstructor.addConstructorProperties = true
  • @Value向您的班级添加lombok 批注以使其不可变

然后,Jackson的序列化和反序列化将按预期工作。

该方法:

编辑:2020-08-16

  • 注意:使用@Builderwith将@Value导致该解决方案失败。(感谢下面来自@ guilherme-blanco的评论。)但是,如果您还添加例如,@AllArgsConstructor它仍然可以按预期运行。
2020-12-03