4

我正在注册KeyDeseriliserObjectMapper. 阅读后JSON我想取消注册这个模块。因为我ObjectMapper是静态的,我不想在任何其他地方使用这个模块。

SimpleModule module = new SimpleModule("EnhancedDatesModule", new Version(0, 1, 0, "test", "Test-id",
"testest"));
module.addKeyDeserializer(EncounterCURN.class, new MapKeyDeseriliser());
objectMapper.registerModule(module);
Map<EncounterCURN, Collection<EncounterTodo>> encounterTodosByEncounter = mapReader.readValue(nodes.get("todos"));
4

2 回答 2

2

不,你不能这样做。您应该创建另一个ObjectMapper并使用它。

顺便说一句,staticfields 这不是Java 编程的一个好习惯。您应该避免出现此类对象的情况static

于 2014-04-10T22:54:37.490 回答
0

根据文档,该模块有一个setSerializers

/**
 * Resets all currently configured serializers.
 */
public void setSerializers(SimpleSerializers s) {
    _serializers = s;
}

所以,你可以做的是用一个新的空SimpleSerializers对象调用 setter。

免责声明:从线程安全的角度来看,我不是 100% 确定这将如何进行。

于 2021-11-24T21:43:28.740 回答