假设我在 mongo 中有一些像这样的 json:
{"n":"5"}
和这样的 java 类:
@Entity
public class Example {
Integer n;
}
这行得通(我知道 json 应该将值存储为 int 而不是字符串,但我不控制那部分)。
现在当我有像这样的吗啡抛出的数据时:
{"n":""}
我正在寻找解决方法(我想要的行为是将空字符串视为与 null 相同)。
目前我唯一的解决方法是:
public class Example {
String n;
public Integer getN() {
return NumberUtils.isNumber(n) ? NumberUtils.createInteger(n) : null;
}
}
但我希望有某种方法可以在自定义反序列化行为的 Integer 属性上挂上注释。
最佳答案
所以我在 morphia google 群组上问了这个问题,我想我会分享答案。使用生命周期注释 @PreLoad
允许我在转换为 POJO 之前修改 DBObject。所以应该这样做:
@PreLoad void fixup(DBObject obj) {
if (StringUtils.isEmpty(obj.get("n"))) {
obj.put("n",null);
}
}
关于java - 吗啡处理坏数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187318/