SetValuedMap 未被 Jackson 正确反序列化

我正在使用一个Map<String, SetValuedMap<String, CustomerDomain>>. 我在调试时得到了正确的结果,但以下是我的控制器返回的结果。似乎杰克逊无法反序列化 SetValuedMap。


{

   "first": {

      empty:false

   },

   "second": {

      empty:false

   }

}


茅侃侃
浏览 76回答 1
1回答

回首忆惘然

这是因为数据结构Map在反/序列化时需要一些特殊的逻辑,并且任何将 POJO 转换为 JSON 的库都对扩展接口的对象有一些自己的处理Map。也SetValuedMap需要这种处理,因为值不能直接从字段中读取,而是可以使用put(..)和get(..)方法读取(因为它在 中以相同的方式完成Map)。但是:SetValuedMap不实现Map接口。它在例如方法返回值类型方面有所不同put(),因此在这个意义上它们是“不兼容的”。它是来自 Apache Commons 的实用程序类,而不是“标准 Java”。因此杰克逊可能不知道如何反序列化这个类。您可能需要为 - 例如 - 编写自定义 de/serializer&nbsp;MultiValuedMap。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java