我正在尝试将 Java 对象转换为 JsonNode,如下所示。
mapper.setConfig(mapper.getSerializationConfig().with(contextAttributes));
mapper.valueToTree(object);
有一个 objectMapper 实例。 因此,对于每个请求,objectMapper 序列化配置都会发生变化。这会导致并发问题,因为一个线程可能会覆盖前一个线程设置的映射器配置。我无法为每个请求创建一个新的 ObjectMapper 实例。我什至无法创建它的副本,因为根据 ObjectMapper javadoc 创建 ObjectMapper 的副本与创建新实例一样昂贵。
那么最好的转换方式是什么?
最佳答案
这似乎是使用 ObjectWriter 的情况,根据其 javadoc 是
used for per-serialization configuration of serialization parameters
您从 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());
关于java - 将 Java 对象转换为 JsonNode,并根据请求更改 SerializationConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47952580/