私はシリアライズする必要のあるライブラリコードをいくつか持っています。 1つのフィールドはインターフェースFooとして定義され、これは単にマーカーインターフェースです。クライアントコードは、Foo
を実装するEnumを作成し、必要に応じてサブタイプリストを拡張できるようになっています。Gsonとのインタフェースを実装するEnumをシリアライズ
タイプアダプターでGsonでこれをシリアル化できません。私が手に例外は次のとおりです。
java.lang.IllegalStateException:未JSONオブジェクト:セットアップはクライアント列挙
Bar
の一つの要素である "SETUP"
。
IはGson RuntimeTypeAdapter
コード(GoogleのGsonヘルパー)を使用して、サブタイプとしてスーパータイプとBar
としてFoo
定義TypeAdapter
を追加しました。私が間違ってやっていることについてのアイデア、またはGsonによってサポートされていないこの種の構造ですか?
Foo
を抽象クラスに、Setup
をサブクラスにすることで回避できますが、enumは実際にはトークンであるため、少し劣ります。
少なくとも、MCVEと使用しているGsonのバージョンのために例外スタックトレースを投稿するといいでしょう。 –