3

美好的一天,大家好,

我正在尝试配置 Jackson 对象映射器以将任何 json 字符串反序列化为我的域特定对象。我已经将对象映射器配置如下

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 没有得到正确的反序列化,因为它们是抽象类型。

我收到以下错误 Unexpected token (START_OBJECT), expected VALUE_STRING: need JSON String that contains type id (for subtype of java.util.List)

在这种情况下,对象映射器没有使用默认的 collectionFallBacks

我尝试了其他配置来克服这个问题,例如

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

然而,这些会导致其他问题。

有人可以帮助我吗?我现在已经花了几天时间。这似乎是杰克逊的一个限制。如我错了请纠正我

4

1 回答 1

1

我最近遇到了这个问题。在你的 POJO 中试试这个,而不是将属性定义为

List<SimpleModule> 

将其定义为

List<Object>.
于 2013-10-08T18:34:24.823 回答