将 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>>() {});
根据文档,实例可以重用:
使用“突变工厂”模式,使实例不可变(因此完全线程安全,无需外部同步);新实例是针对不同的配置构建的。实例最初由ObjectMapper构建,可以重用、共享、缓存;既是因为线程安全,也是因为实例相对轻量。
考虑到文档中所做的保证,如果您愿意的话,没有理由不在项目中为每种类型使用单个实例。