问题描述
我有一堂课,我想对Jackson进行反序列化和序列化。目前这就是我所拥有的
class Person {
@JsonAlias("fullName")
@JsonDeserialize(using = NameDeserializer.class)
String name;
}
我希望能够从{"fullName": "John Doe"}
读取并写入{"name": "John Doe"}
。
我还使用Lombok创建了setter和getter,所以我不能在方法级别使用@JsonProperty。任何想法我将如何处理,因为目前看来@JsonAlias不能按预期工作。我正在使用Jackson 2.10映射对象。
编辑
使用Alias效果很好。虽然在第一次弄清楚它是如何工作的,但我还是改写了龙目岛二传手
@JsonProperty("firstName")
public void setName(String name){
this.name = name;
}
从这里我发现我的反序列化器实际上是问题所在。
解决方法
只需删除自定义反序列化器,然后使用@JsonProperty
注释该字段,即可使您的方案起作用:
class Person {
@JsonAlias("fullName")
@JsonProperty
String name;
}
自定义反序列化器控制反序列化的完成方式,因此别名可能会被忽略。
,您可以将JsonProperty批注与此处https://github.com/FasterXML/jackson-annotations
一起使用,并带有属性public class Name {
@JsonProperty("firstName")
public String _first_name;
}