1

我正在使用 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")

但只有在有指向原始对象的链接时才会停止递归。我怎样才能解决这个问题?

4

1 回答 1

1

Jackson 2.0 身份处理旨在按原样包含 Object 的第一个实例,并且仅包含使用 id 的辅助引用。

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

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

并实施MyIdOnlySerializer,使其只写出identifier.

于 2012-07-24T17:00:19.427 回答