我正在使用一个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
。
添加回答
举报
0/150
提交
取消