2012-05-30 29 views
0

我有一個串行的一個問題,這裏是我的問題:傑克遜串行:獲取序列化對象

我有一個bean類這樣的:

@JsonSerialize(using = MyObjectSerializer.class) 
public class MyObject { 
    public int a; 
    public boolean b; 
} 

當過傑克遜序列化,而不@ JsonSerialize註解,我明明得到:

{ "a": 42, "b": true} 

但我需要的過程中它添加屬性:

{ "a": 42, "b": true, "version": "0.1-beta" } 

(這是一個例子,在現實世界中,我添加屬性取決於對象的幾個屬性)

所以我需要編寫自定義序列。 然而,在我真正的代碼,該類包含的不僅僅是2。所以我不想手動創建這些屬性的JSON對象更多的屬性...

如果我用這個:

public static class MyObjectSerializer extends JsonSerializer<MyObject> { 
    @Override public void serialize(MyObject obj, JsonGenerator json, SerializerProvider provider) throws IOException, JsonProcessingException { 
     json.writeObject(obj); 
    } 
} 

我明顯得到一個StackOverflowError。

所以,問題可以是:

  • 如何,從JsonSerializer內可序列化,無需重新調用序列化的對象本身?

  • 我怎樣才能動態特性添加到對象序列化beeing。

我以前做的所有GSON但​​傑克遜的時間提供功能的負荷,我喜歡使用;)

回答

0

我敢肯定吸氣,在你的榜樣getVersion(),沒有支持屬性就足夠了,您可以在其中生成0.1-beta。 (或者根據您描述的幾個屬性的值生成值)。

因此,不需要爲此目的使用自定義串行器