【发布时间】:2023-03-24 01:05:02
【问题描述】:
我遇到了这个库eclipse-collections,它适合我的用例。但不幸的是,我无法使用 Gson 或 Jackson(这两个最流行的序列化/反序列化库)对其进行反序列化。
这两个库中的任何一个都提供对 Eclipse 集合的支持吗?如果是,那么如何?
【问题讨论】:
标签: java jackson eclipse-collections
我遇到了这个库eclipse-collections,它适合我的用例。但不幸的是,我无法使用 Gson 或 Jackson(这两个最流行的序列化/反序列化库)对其进行反序列化。
这两个库中的任何一个都提供对 Eclipse 集合的支持吗?如果是,那么如何?
【问题讨论】:
标签: java jackson eclipse-collections
eclipse-collections 的官方 github 存储库的自述文件中的一个文档提到:
不幸的是,新的集合类型与正常的序列化框架不兼容。 Jackson 可以说是 Java 最流行的 JSON 序列化框架,它无法开箱即用地反序列化 Eclipse Collections 类型。为此,现在有一个 Jackson 模块直接支持大多数 Eclipse 集合类型(包括原始集合)。
他们不仅提到了问题,而且还提供了解决方案。您需要做的就是将 EclipseCollectionsModule 注册到 Jackson 的 ObjectMapper 对象,如下所示:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.eclipsecollections.EclipseCollectionsModule;
ObjectMapper mapper = new ObjectMapper().registerModule(new EclipseCollectionsModule());
完成上述操作后,您现在可以照常使用 ObjectMapper。所以,
MutableIntLongMap myDeserialisedVariable = mapper.readValue(jsonString, MutableIntLongMap.class);
【讨论】: