【发布时间】:2017-01-25 10:54:07
【问题描述】:
我需要帮助,这里是任务的描述:
1.我有基础接口
interface IPolymorphicModel
2。我的嵌套接口很少:
interface IContentItem extends IPolymorphicModel
interface IAttachment extends IPolymorphicModel
3。我的实现很少:
public class MediaAttachment implements IAttachment
public class Article implements IContentItem {
private List<IAttachment> attachements;
}
我正在使用 jackson(我也尝试使用 Gson 使用 registerTypeAdapterFactory)来解析当前的 json 结构。我正在使用下一种方法对所有嵌套项使用单个 Deserializer 来反序列化 json:
Module module = new SimpleModule()
module.setDeserializerModifier(new BeanDeserializerModifier() {
public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config,
BeanDescription beanDesc,
JsonDeserializer<?> deserializer){
if (IPolymorphicModel.class.isAssignableFrom(beanDesc.getBeanClass())){
return new PolymorphicJsonDeserializer()
}
return super.modifyDeserializer(config, beanDesc, deserializer);
})
但是解析内部项目存在问题:如您所见,内部对象可以包含具有相同 super 的对象,而当杰克逊尝试解析它们时,它对 IPolymorphicModel 和注册相同的内容一无所知BeanDeserializerModifier 是不可能的,因为它会导致堆栈溢出。
【问题讨论】:
标签: java json jackson polymorphism deserialization