java - 如何反序列化 Eclipse Collections 类型?
问题描述
我遇到了这个库eclipse-collections,它适合我的用例。但不幸的是,我无法使用 Gson 或 Jackson(这两个最流行的序列化/反序列化库)对其进行反序列化。
这两个库中的任何一个都提供对 eclipse 集合的支持吗?如果是,那么如何?
解决方案
eclipse-collections的官方 github repo 的自述文件中的文档之一提到:
不幸的是,新的集合类型与正常的序列化框架不兼容。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);
推荐阅读
- php - Google Calendar API 不适用于私人日历
- css - 消极的替代品
- c++ - glew 导致屏幕在红色和黑色之间闪烁。高兴的作品
- php - 如何在没有斜杠的情况下访问目录的 index.php 并且不获得 301 重定向(NGinx)
- javascript - 页面加载时自动滚动图像,悬停时停止
- dart - 如何向 Flutter 应用添加水平卡片轮播视图
- python - Parsimonious ParseError
- tensorflow - 用于 kubernetes 的多用户和 GPU 的 JupyterHub
- here-api - (看似)Here's Public Transit API 中未记录的交通方式
- pandas - Pandas 通过从另一个数据框中查找列名和值来更新数据框