JSON 形式のツリー オブジェクトがあり、これを Gson で逆シリアル化しようとしています。各ノードには、オブジェクト タイプ Node のフィールドとして子ノードが含まれています。Node はインターフェイスであり、いくつかの具体的なクラス実装があります。逆シリアル化プロセス中に、ノードがどのタイプに属しているか事前にわからない場合、ノードを逆シリアル化するときに実装する具体的なクラスを Gson に伝えるにはどうすればよいですか。各ノードには、タイプを指定するメンバー フィールドがあります。オブジェクトがシリアル化された形式の場合にフィールドにアクセスし、何らかの方法でタイプを Gson に伝える方法はありますか。
ありがとう!
ベストアンサー1
カスタムを追加することをお勧めしますJsonデシリアライザーsの場合Node
:
Gson gson = new GsonBuilder()
.registerTypeAdapter(Node.class, new NodeDeserializer())
.create();
JsonElement
デシリアライザのメソッドでノードを表す にアクセスし、それを に変換してJsonObject
、型を指定するフィールドを取得できるようになります。その後、Node
それに基づいて の正しい型のインスタンスを作成できます。