使用Jackson ObjectMapper

时间:2017-07-31 21:05:21

标签: java json duplicates objectmapper

在重复的情况下,ObjectMapper默认只保留其中一个元素作为键。即,最后一个元素将始终是存储的元素。例如:

{   “名字”:“xyz”,   “名字”:“abc” }

如果我们在上面的树上使用ObjectMapper readTree,它将深入到:

--> ObjectMapper.readTree(<json-input>)

    --> ObjectMapper._readMapAndClose

        --> BaseNodeDeseralizer.deserializeObject

            --> JsonNode old = node.replace(key, value);    // replaces a key in case of duplicates

以上将在树中添加“name”:“xyz”,然后在第二次运行时将其替换为“name”:“abc”。

有重复项可能导致ObjectMapper失败/吐出错误的配置选项。例如:

mapper.enable(MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS);
mapper.enable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);
mapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY);

但我找不到允许重复的配置选项。

我已经尝试重写deserializeObject方法以不进行替换。但这似乎是不明智的,因为我的覆盖方法将“脱离”库的方法,我将无法获取未来的更新/修复。

我的问题是:是否允许ObjectMapper保留重复的密钥(给定它使用的数据结构)?如果是这样,怎么样?

0 个答案:

没有答案