Java Jackson:自定义对象的解析(来自@JsonIdentityInfo)
在我的SpringWebMVC应用程序中,我试图反序列化对象引用列表 以下是“我的模型”字段的外观:Java Jackson:自定义对象的解析(来自@JsonIdentityInfo),java,spring-mvc,jackson,Java,Spring Mvc,Jackson,在我的SpringWebMVC应用程序中,我试图反序列化对象引用列表 以下是“我的模型”字段的外观: @Entity @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id") public class Article { @Id private Integer id; @ManyToMany(cascade=CascadeType.ALL) @Js
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Article {
@Id
private Integer id;
@ManyToMany(cascade=CascadeType.ALL)
@JsonIdentityReference(alwaysAsId=true)
private List<Article> related;
}
我已经试着编写我的自定义反序列化程序来处理这个问题,但是由于关系是同一类的对象,Jackson也会尝试用自定义反序列化程序反序列化父对象,这显然会失败,因为它不仅仅是一个整数
那么有没有办法告诉Jackson使用数据库来查找ID后面的对象呢?从2.4.0版开始,您可以使用@JsonIdentityInfo注释的“resolver”属性
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
resolver = MyCustomObjectIdResolver.class,
scope = Article.class,
property = "id")
@JsonIdentityReference(alwaysAsId = true)
private List<Article> related;
@JsonIdentityInfo(
生成器=ObjectedGenerators.PropertyGenerator.class,
resolver=MyCustomObjectedResolver.class,
scope=Article.class,
property=“id”)
@JsonIdentityReference(alwaysAsId=true)
私有列表,因为@jsonidentialreference(alwaysAsId=true)
这在2.4.3中得到了修复,因为MyCustomObjectedResolver.class的代码中存在拼写错误,因此尝试编辑您的帖子。您的代码在Custom中显示“n”而不是“m”。
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
resolver = MyCustomObjectIdResolver.class,
scope = Article.class,
property = "id")
@JsonIdentityReference(alwaysAsId = true)
private List<Article> related;