吗啡处理不良数据
假设我在 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 属性上挂上注释。
Let's say I have some json like this in mongo:
{"n":"5"}
and a java class like this:
@Entity
public class Example {
Integer n;
}
This works (I know that the json should store the value as an int not a string but I don't control that part).
Now when I have data like this morphia throws:
{"n":""}
I'm looking for a workaround (the behavior I'd like is for empty string to be treated same as null).
The only workaround I have so far is:
public class Example {
String n;
public Integer getN() {
return NumberUtils.isNumber(n) ? NumberUtils.createInteger(n) : null;
}
}
But I'm hoping for some way to hang an annotation on the Integer property that customizes the deserialization behavior.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
所以我在吗啡谷歌群组上问了这个问题,我想我应该分享答案。使用生命周期注释
@PreLoad
允许我在转换为 POJO 之前修改 DBObject。所以应该这样做:So I asked this on the morphia google group and I thought I'd share the answer. Using the lifecycle annotation
@PreLoad
allows me to modify the DBObject before conversions into POJO takes place. So this should do it: