小编典典

Jackson-序列化时忽略Map超类

json

我有一些扩展的模型类LinkedHashMap<String, Object>:它们定义用于包装Map的get和put方法的getter和setter。我正在尝试使用Jackson(带有RESTEasy)序列化这些类的实例,但是Jackson拒绝注意我的getter(使用注释)@JsonProperty。而是仅序列化支持映射的键-
值对。我尝试使用@JsonAutoDetect禁用所有方法和字段的自动检测功能,但这并没有任何改变。有没有办法防止Jackson序列化Map,还是必须创建不扩展的新模型类LinkedHashMap<String, Object>


阅读 353

收藏
2020-07-27

共1个答案

小编典典

我有一些扩展的模型类LinkedHashMap<String, Object>:它们定义了包装地图的get和put方法的getter和setter。

这是何时
使用继承的经典示例:您发现其他一些代码段(例如Jackson)将您的类当作其超类的实例来对待,这不是您想要的。在此类情况下(以及通常情况下),通常最好使用组合而不是继承。

我建议重写模型类以 包含
一个映射,而不是扩展一个。您获得的控制多于方式,并且最终的模型不那么脆弱。如果您需要以形式查看模型Map,则可以实现一个asMap呈现该视图的方法(或类似方法)。

2020-07-27