我有一个如下所示的课程
class Person {
Long id;
String firstName;
int age;
}
我的输入看起来像这样:
{ "id": null, "firstName": "John", "age": 10 }
或像这样:
{ "id": 123 }
第一个变体代表一个“新”(非持久化)人,第二个变体通过其数据库 id 指代一个人。
如果id
非空,我想在反序列化期间从数据库加载对象,否则回退到常规解析并将其反序列化为新对象。
我尝试过的:我目前有一个JsonDeserializer
用于数据库反序列化的,但据我了解,没有办法“退回”常规解析。根据这个答案,我应该使用 aTypeAdapterFactory
和getDelegateAdapter
. 我对这种方法的问题是我得到了 a JsonReader
(而不是例如 a JsonElement
),所以我无法确定输入是否包含有效id
输入而不消耗输入。
关于如何解决这个问题的任何建议?