杰克逊2.0循环关系

时间:2012-07-23 16:37:10

标签: json spring-mvc annotations jackson

我正在使用jackson 2.0序列化一个有自己引用的类。

Class A{
  String identifier;
  List<A> related;
}

我希望JSON看起来像这样:

{ identifier: "name",
  related [ identifier: "related to name",
            identifier: "also related to name"]
}

基本上我想要经历一次递归深度。我试过了

@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")

但是只有返回原始对象的链接才会停止递归。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Jackson 2.0身份处理旨在包含一个Object的第一个实例,并且只包含使用id的二次引用。

但您可以为“相关”字段定义自定义序列化程序(和反序列化程序),以使用不同的序列化样式:

@JsonSerialize(contentUsing=MyIdOnlySerializer.class) List<A> related;

并实施MyIdOnlySerializer,以便只写出identifier