java - 吗啡处理坏数据

标签 java mongodb morphia

假设我在 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/

相关文章:

java - resultSet.rowUpdated() 抛出 createSQLFeatureNotSupportedException

java - 行为不一致

java - 从字节流中读取多行

mongodb - 在多个网站中引用相同的文档

node.js bodyParser 错误

java - 强制吗啡覆盖现有条目的干净方法

java - 在 Morphia createQuery 方法中传递集合名称是一个好习惯吗?

java - 谁使用默认的 mongo 驱动程序在 java/morphia 上加载 DbRefs

java - 使用另一个列表对列表进行排序

java - “字段需要一个无法找到的 bean。”使用mongodb的错误spring restful API