Jackson JsonNode 到类型化集合:TypedReference 的 ObjectReader 应该是单例吗?

问题描述 投票:0回答:1

将 Jackson JsonNode 转换为 Java 集合时?

请参阅下面的问题/答案:https://stackoverflow.com/a/39237947/15435022

ObjectMapper mapper = new ObjectMapper();  // singleton in the project
...
JsonNode arrayNode = mapper.createArrayNode().add("one").add("two");
ObjectReader reader = mapper.readerFor(new TypeReference<List<Product>>() {});
List<String> list = reader.readValue(arrayNode);

TypeReference 的 ObjectReader 应该是项目中的单例,还是应该在每次调用方法时重新声明?

我已经在项目中将 ObjectMapper 声明为单例。

ObjectReader reader = mapper.readerFor(new TypeReference<List<Product>>() {});
java json jackson objectmapper
1个回答
0
投票

根据文档,实例可以重用:

使用“突变工厂”模式,使实例不可变(因此完全线程安全,无需外部同步);新实例是针对不同的配置构建的。实例最初由ObjectMapper构建,可以重用、共享、缓存;既是因为线程安全,也是因为实例相对轻量。

考虑到文档中所做的保证,如果您愿意的话,没有理由不在项目中为每种类型使用单个实例。

© www.soinside.com 2019 - 2024. All rights reserved.