2016-08-04 7 views
3

誰かが私のクラスビルダーとクラスをデシリアライズするときにコンストラクターを使用できるようにすることはできますか?Gsonはクラスビルダーを使用してデシリアライズできますか?

私は、次のようなものでジャクソンとのビルダーを使用することができます知っている:

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

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

は、私が使用できることをGsonため@JsonPOJOBuilderのようなものはありますか? JSONを解析し、あなたのビルダーを起動するあなたはおそらくwrite a custom deserializerすることをお勧めします。このような場合のために

おかげ

答えて

0

。ビルダーが具体的なフィールドを持つPOJOだった場合は、代わりに.fromJson(json, Builder.class)を呼び出してからMyClassインスタンスを構築することができますが、ここではうまくいかないと思います。

一般的に、これはGson(またはJackson、あなたの選択を取る)を使用するのには良い場所のようではありません。 Gsonの目的は、Javaクラス構造を使用してJSONスキーマを表現し、その2つの間で簡単に変換をサポートすることです。 Gsonをこのような他のユースケースをサポートするようにマッサージしますが、そのメリットはあまり明確になりません。個人的には、ジャクソンとGsonを一緒に楽しくする時間を費やすのではなく、解析しようとしているスキーマをエンコードするPOJOを作成するだけです。

これは、一般的な解決策も可能であると述べています。クイック検索でAutoValueGson adapterが見つかったので、代わりにAutoValueを使用するか、Jacksonのために同様のことを行うことができます。

関連する問題