2012-07-23 59 views
1

我使用傑克遜2.0來序列化一個有自己的引用的類。傑克遜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

Jackson 2.0身份處理被設計爲包含一個對象的第一個實例,並且僅包含使用id的第二個引用。

但是你可以爲你的「關係」字段定義自定義序列(和解串器),使用不同的序列化的風格:

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

和實施MyIdOnlySerializer,使其只寫出identifier