java - 将 Java 对象转换为 JsonNode,并根据请求更改 SerializationConfig

标签 java serialization jackson objectmapper

我正在尝试将 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/

相关文章:

java - keystore 更改密码

java - 使用 Selenium WebDriver 启动 Firefox 时出现 NotConnectedException

json - 使用 Alamofire 将 Web 服务响应转换为 JSON 对象

java - NoClassDefFoundError : org/codehaus/jackson/Versioned using Jackson JSON parser

java - 在 Java 中展平 JSONObject - 递归导致 StackOverflowError

java - 在运行时将属于 JSON 对象一部分的 JSON 字符串转换为 JSON 对象

java - SonarQune 提示从 wsdl 文件生成的 _equalsCalc 变量不是 transient 的或可序列化的

java - 使用java从pdf文件中提取文本时遇到的问题

c# - 在 C# 和 C++ 之间交换对象

java - Eclipse 控制台输出限制