假设我在mongo中有一些这样的json:
{"n":"5"}
和这样的java类:
@Entity
public class Example {
Integer n;
}
这有效(我知道json应该将值存储为int而不是字符串,但我不控制该部分。)
现在当我有像这样的数据时,morphia会抛出:
{"n":""}
我正在寻找一种解决方法(我想要的行为是将空字符串视为null)。
到目前为止我唯一的解决方法是:
public class Example {
String n;
public Integer getN() {
return NumberUtils.isNumber(n) ? NumberUtils.createInteger(n) : null;
}
}
但是我希望能够在Integer属性上挂起注释来自定义反序列化行为。
答案 0 :(得分:6)
所以我在morphia google小组问这个问题,我想我会分享答案。使用生命周期注释@PreLoad
允许我在转换为POJO之前修改DBObject。所以这应该这样做:
@PreLoad void fixup(DBObject obj) {
if (StringUtils.isEmpty(obj.get("n"))) {
obj.put("n",null);
}
}