【问题标题】:Convert Java object to JsonNode with change in SerializationConfig per request将 Java 对象转换为 JsonNode,并根据请求更改 SerializationConfig
【发布时间】:2018-06-05 18:16:06
【问题描述】:

我正在尝试将 Java 对象转换为 JsonNode,如下所示。

mapper.setConfig(mapper.getSerializationConfig().with(contextAttributes));
mapper.valueToTree(object);

只有一个 objectMapper 实例。 因此,对于每个请求,objectMapper 序列化配置都会发生变化。这会导致并发问题,因为一个线程可能会覆盖前一个线程设置的映射器配置。我无法为每个请求创建一个新的 ObjectMapper 实例。我什至无法创建它的副本,因为根据 ObjectMapper javadoc 创建 ObjectMapper 的副本与创建新实例一样昂贵。

那么最好的转换方式是什么?

【问题讨论】:

  • 有什么问题?
  • 想检查是否有任何其他方式进行转换。

标签: java serialization jackson objectmapper


【解决方案1】:

这似乎是使用 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());

【讨论】:

    猜你喜欢
    • 2014-09-21
    • 2015-01-02
    • 2015-08-23
    • 2012-08-03
    • 1970-01-01
    • 2012-07-17
    • 2017-10-15
    • 1970-01-01
    相关资源
    最近更新 更多