为了账号安全,请及时绑定邮箱和手机立即绑定

SetValuedMap 未被 Jackson 正确反序列化

SetValuedMap 未被 Jackson 正确反序列化

茅侃侃 2023-02-16 15:48:07
我正在使用一个Map<String, SetValuedMap<String, CustomerDomain>>. 我在调试时得到了正确的结果,但以下是我的控制器返回的结果。似乎杰克逊无法反序列化 SetValuedMap。{   "first": {      empty:false   },   "second": {      empty:false   }}
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

这是因为数据结构Map在反/序列化时需要一些特殊的逻辑,并且任何将 POJO 转换为 JSON 的库都对扩展接口的对象有一些自己的处理Map

SetValuedMap需要这种处理,因为值不能直接从字段中读取,而是可以使用put(..)get(..)方法读取(因为它在 中以相同的方式完成Map)。

但是:SetValuedMap不实现Map接口。它在例如方法返回值类型方面有所不同put(),因此在这个意义上它们是“不兼容的”。它是来自 Apache Commons 的实用程序类,而不是“标准 Java”。

因此杰克逊可能不知道如何反序列化这个类。您可能需要为 - 例如 - 编写自定义 de/serializer MultiValuedMap


查看完整回答
反对 回复 2023-02-16
  • 1 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信