当前位置:  开发笔记 > 编程语言 > 正文

morphia处理坏数据

如何解决《morphia处理坏数据》经验,为你挑选了1个好方法。

假设我在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属性上挂起注释来自定义反序列化行为.



1> Kevin..:

所以我在morphia谷歌小组问这个问题,我想我会分享答案.使用生命周期注释@PreLoad允许我在转换为POJO之前修改DBObject.所以这应该这样做:

@PreLoad void fixup(DBObject obj) {
    if (StringUtils.isEmpty(obj.get("n"))) {
        obj.put("n",null);
    }
}

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有