2016-08-04 82 views
3

有沒有人知道我是否可以讓Gson在反序列化我的類時使用我的類構建器和構造函數?Gson可以使用類構建器反序列化嗎?

我知道我可以使用建設者傑克遜像下面這樣:

@JsonDeserialize(builder = MyClass.MyClassBuilder.class) 
@Builder 
@Value 
public class MyClass 
{ 
    @NonNull 
    private final String myValue; 

    @JsonPOJOBuilder(withPrefix = "") 
    public static final class MyClassBuilder{} 
} 

是否有類似的東西,以@JsonPOJOBuilder爲GSON,我可以使用?

感謝

回答

0

對於這樣的情況下,你可能會想write a custom deserializer是解析JSON和調用你的建設者。如果您的建築師是具有混凝土領域的POJO,則可以調用.fromJson(json, Builder.class),然後從中創建MyClass實例,但我認爲這不適用於此。

一般來說,這似乎不是一個好地方使用Gson(或傑克遜,請選擇)。 Gson的目的是使用Java類結構來表示JSON模式,然後在兩者之間輕鬆轉換。你可以可以按摩Gson來支持像這樣的其他用例,但好處變得不太清楚。就個人而言,我只是創建一個POJO來編碼你試圖解析並從那裏出發的模式,而不是花時間讓Jackson和Gson一起玩。

這就是說一個通用的解決方案也是可能的。快速搜索發現Gson adapterAutoValue,所以你可以使用AutoValue,或者爲Jackson做類似的事情。