首页 > 解决方案 > 如何反序列化 Eclipse Collections 类型?

问题描述

我遇到了这个库eclipse-collections,它适合我的用例。但不幸的是,我无法使用 Gson 或 Jackson(这两个最流行的序列化/反序列化库)对其进行反序列化。

这两个库中的任何一个都提供对 eclipse 集合的支持吗?如果是,那么如何?

标签: javajacksoneclipse-collections

解决方案


eclipse-collections的官方 github repo 的自述文件中的文档之一提到:

不幸的是,新的集合类型与正常的序列化框架不兼容。Jackson 可以说是 Java 最流行的 JSON 序列化框架,它无法开箱即用地反序列化 Eclipse Collections 类型。为此,现在有一个 Jackson 模块直接支持大多数 Eclipse 集合类型(包括原始集合)。

他们不仅提到了这个问题,而且还提供了解决方案。您需要做的就是向EclipseCollectionsModuleJackson 的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);

推荐阅读