【发布时间】:2020-08-06 13:59:46
【问题描述】:
我有一个包含这种格式对象的 Mongo 集合:
{
id: 1,
date: "2020-08-06T12:00:00Z",
...
}
我有需要从这个集合中读取但从不写入的 Java 代码。写入此集合的进程不归我所有,因此我不一定能更改该日期字符串的格式。我最初尝试像这样对我的 Java Morphia 对象进行建模:
@Entity public class MyDocument {
@Id
private Integer id;
private Date date;
...
}
这不起作用,因为 Morphia 不知道如何将该日期格式反序列化为 Date 对象。我想出的解决方案是将日期视为 POJO 上的字符串,然后使用 getDate() 方法进行实际反序列化。我想知道,我有没有更好的方法来做到这一点?我知道如果您使用 Jackson,您可以使用 @JsonDeserialize 注释某些字段并传递反序列化器,所以我想知道 Morphia 是否有类似的东西。
我的解决方案(我觉得不是最理想的):
@Entity public class MyDocument {
@Id
private Integer id;
private String date;
...
private Date getDate() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
try {
return dateFormat.parse(date);
} catch (Exception ex) {
return null;
}
}
}
【问题讨论】:
标签: java json mongodb deserialization morphia