具体的な基本クラスAnimal
、、およびいくつかのサブクラスDog
などCat
があります。
Dog
との詳細は関係ないので、これらのサブクラスのインスタンスを、 sがシリアル化されるのCat
と同じ方法でシリアル化したいと思います。Animal
そのようなサブクラスはかなりたくさんあるので、それらすべてをリストしないソリューションをお勧めします。に基づく何かinstanceof Animal
が理想的です。
(コメントから完全な回答に移動)
サブクラスをそれらのサブクラスとしてシリアライズせず、親としてのみシリアライズしたくない場合は、サブクラスのすべてのフィールドをtransient
デフォルトGson
でシリアライズしないようにマークするだけです。
どちらの方法でも実行できるようにする場合は、親クラスのすべてのフィールドを Gson@Expose
アノテーションでマークします。次に、シリアル化するときに、次を使用してシリアル化する方法を選択できます。
Gson gson = GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
JSON で表される親クラスのみが必要な場合。