首页 文章

Jackson默认打字列表反序列化

提问于
浏览
3

美好的一天,大家好,

我正在尝试配置Jackson Object Mapper以将任何json String反序列化为我的域特定对象 . 我已经将Object Mapper配置如下

ObjectMapper mapper = new ObjectMapper();
mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, "remoteClass");

在我的域中,任何json字符串都应该包含一个remoteClass属性,该属性表示它对应的实际JAVA POJO(规范名称) . 以上配置有助于解决抽象类型

但是,有了上述内容,现在java.util.Lists没有得到正确的反序列化,因为它们是抽象类型 .

我得到以下错误意外的令牌(START_OBJECT),期望VALUE_STRING:需要包含类型id的JSON字符串(对于java.util.List的子类型)

在这种情况下,Object Mapper不依赖于默认的collectionFallBacks

我尝试了其他配置来克服诸如此类的问题

SimpleModule module = new SimpleModule("test", Version.unknownVersion());
module.addAbstractTypeMapping(List.class, ArrayList.class);
mapper.registerModule(module);

然而,这些导致了其他问题 .

有人可以帮我一样 . 我现在花了几天时间 . 这似乎是 Jackson 的限制 . 如我错了请纠正我

1 回答

  • 1

    我最近遇到了这个问题 . 在您的POJO中尝试此操作,而不是将属性定义为

    List<SimpleModule>
    

    将其定义为

    List<Object>.
    

相关问题