我正在尝试将Java对象转换为JsonNode,如下所示。
mapper.setConfig(mapper.getSerializationConfig().with(contextAttributes));
mapper.valueToTree(object);
有一个objectMapper实例。 因此,对于每个请求,objectMapper序列化配置都有变化。这会导致并发问题,因为一个线程可能会覆盖前一个线程所设置的映射器的配置。我无法为每个请求创建一个新的ObjectMapper实例。我不能创建它的副本,因为根据ObjectMapper javadoc创建ObjectMapper的副本与创建新实例一样昂贵。
那么转换的最佳方式是什么?
答案 0 :(得分:0)
这似乎是使用ObjectWriter的情况,根据其javadoc是
用于序列化参数的序列化配置
您可以从ObjectMapper
创建实例并添加如下的专用配置:
ObjectWriter writer = mapper.writer(contextAttributes);
writer.writeValue(responseOutputStream, object);
遗憾的是,ObjectWriter
类并不包含将输出写入JsonNode
的简便方法。如果你真的需要结果不是字符串,你可以把它读成这样的树:
StringWriter sw = new StringWriter();
writer.writeValue(sw, object);
JsonNode jsonNode = mapper.readTree(sw.toString());