次のようなクラスがあります
class Person {
Long id;
String firstName;
int age;
}
私の入力は次のようになります。
{ "id": null, "firstName": "John", "age": 10 }
またはこのように:
{ "id": 123 }
最初のバリアントは「新しい」(永続化されていない) 個人を表し、2 番目のバリアントはデータベース ID で個人を参照します。
が null でない場合id
は、デシリアライズ中にデータベースからオブジェクトをロードします。それ以外の場合は、通常の解析にフォールバックし、新しいオブジェクトとしてデシリアライズします。
私が試したこと:現在JsonDeserializer
、データベースのデシリアライゼーションを持っていますが、私が理解しているように、通常の解析に「フォールバック」する方法はありません。この回答によるとTypeAdapterFactory
、 a とを使用する必要がありgetDelegateAdapter
ます。このアプローチに関する私の問題は、JsonReader
(たとえば a ではなく)が与えられているため、入力を消費せずJsonElement
に入力に有効なが含まれているかどうかを判断できないことです。id
これを解決する方法について何か提案はありますか?