【发布时间】:2018-01-28 14:26:09
【问题描述】:
我在一个 Android 项目中使用 Firestore。
我有一个 Transaction 模型,它有一个 org.threeten.bp.LocalDateTime date 字段。
当我试图通过调用 docRef.toObject(Transaction.class 将 DocumentReference 反序列化为 Transaction 模型时,我收到以下错误:
java.lang.RuntimeException:无法反序列化对象。无法将 java.lang.String 类型的对象转换为 org.threeten.bp.LocalDateTime 类型(在字段“日期”中找到)
这是正常的,因为服务器将日期作为字符串返回。
是否可以使用自定义反序列化器?
我知道我可以放弃使用toObject 方法并编写自定义代码,但感觉很浪费,因为我只需要对单个字段进行自定义反序列化。
其余字段正确反序列化。
【问题讨论】:
-
我相信日期/时间字段的兼容类型是 Java.util.Date。由于您使用的是 String(也兼容),因此也许可以对自定义类的日期相关字段使用 Getter/Setter 方法将 LocalDateTime 转换为 String ,反之亦然?
-
@KaranModi 这就是我最终要做的事情,但如果我能够在使用
toObject方法时将转换应用于特定字段,则首选。
标签: android serialization google-cloud-firestore