【发布时间】:2021-02-27 13:21:08
【问题描述】:
我正在开发一个 Web 项目,它使用一个静态 ObjectMapper,它是通过 XML 文件配置的,并且应该在整个项目中生效。但是,无论设置如何,我都必须实现一个 API 来发送一个不忽略 null 属性的响应。我的老板告诉我他不希望创建另一个 ObjectMapper,并且创建我自己的 JSON 编写器被认为是多余的,因此也被禁止。这导致我被困在这里。 我试过了。
Map<String, Object>resultMap = getResult();
try {
mapper.setSerializationInclusion(Include.ALWAYS);
response = mapper.writeValueAsString(resultMap);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
} finally {
if (ServiceConfig.isWriteNull()) {
mapper.setSerializationInclusion(Include.ALWAYS);
} else {
mapper.setSerializationInclusion(Include.NON_NULL);
}
}
要临时切换设置,它可以工作。但是考虑到映射器是异步使用的,改变全局配置绝对是个坏主意。我也想过在配置切换之前给映射器加个锁,但是由于映射器是静态的,这可能是另一个坏主意。我想有一些巧妙的方法,比如注释或参数神奇地影响单个执行。不知道有没有可能?
【问题讨论】:
-
你不能有两个不同的
ObjectMapper实例吗? -
根据性能,您还应该能够复制 ObjectMapper stackoverflow.com/a/61614730/5126654 即复制映射器,然后更改配置。
标签: java json objectmapper fasterxml