美好的一天, 大家好,
我正在尝试配置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);
然而,这会导致其他问题。
有人可以帮我一样。我现在花了几天时间。这似乎是杰克逊的限制。如果我错了,请纠正我
答案 0 :(得分:1)
我最近遇到了这个问题。在您的POJO中尝试这一点,而不是将属性定义为
List<SimpleModule>
将其定义为
List<Object>.