我使用morphia v1.3.2和JDK7,我有由Objects和子类表示的文档。在与morphia挣扎了一段时间以利用它的内部映射器后,我找到了一种方法来根据他们的文档和其他帖子改变类的序列化方式,我发现所需要的只是拥有像这样的一个类:
public class MyClassTypeConverter extends TypeConverter {
public ActionTypeConverter() {
super(MyClass.class);
}
@Override
public Object decode(final Class targetClass, final Object fromDBObject, final MappedField optionalExtraInfo) {
//do something to parse my class
return new MyClass((DBObject) fromDBObject);
}
@Override
public Object encode(final Object value, final MappedField optionalExtraInfo) {
//do something to represent this as JSON
return value.toString();
}
}
注册此类型转换器之后
morphia.getMapper().getConverters().addConverter(new MyClassTypeConverter());
现在应该允许使用提供的方法对文档进行de /序列化。但由于某些原因,每个被注册的转换器都被完全忽略了,是否有理由这样做?
注意:我找到了解决此问题的方法。只留下这个问题供参考。
答案 0 :(得分:3)
public class MyClassTypeConverter extends TypeConverter implements SimpleValueConverter {
public ActionTypeConverter() {
super(MyClass.class);
}
@Override
public Object decode(final Class targetClass, final Object fromDBObject, final MappedField optionalExtraInfo) {
//do something to parse my class
return new MyClass((DBObject) fromDBObject);
}
@Override
public Object encode(final Object value, final MappedField optionalExtraInfo) {
//do something to represent this as JSON
return value.toString();
}
}
当我实现它时,我有疑虑,但由于某种原因,我的转换器没有被忽略,文档被解析为它应该,一切都像魔术一样工作,就像点击了一些东西,最后我不再感到沮丧。我希望有人发现这个有用的