gil*_*lby 5 serialization json map resteasy jackson
我有一些扩展的模型类LinkedHashMap<String, Object>:它们定义了包含Map的get和put方法的getter和setter.我正在尝试使用Jackson(使用RESTEasy)序列化这些类的实例,但杰克逊拒绝关注我的getter注释@JsonProperty.相反,它只是序列化支持映射的键值对.我尝试使用@JsonAutoDetect禁用所有方法和字段的自动检测,但这并没有改变任何东西.有没有办法阻止杰克逊自动序列化地图,还是我必须创建不扩展的新模型类LinkedHashMap<String, Object>?
Sta*_*Man 11
我同意@skaffman的回应.但是如果你不能轻易地彻底改变继承结构,可能有办法解决这个问题.
一种可能性是,如果你有一个定义getter/setter的接口,你可以添加
@JsonSerialize(as=MyInterface.class)
@JsonDeserialize(as=MyInterface.class)
Run Code Online (Sandbox Code Playgroud)
这会迫使Jackson只使用通过特定界面提供的任何东西.
自定义序列化器/解串器也是可能的,但这是相当多的工作.
我有一些扩展的模型类
LinkedHashMap<String, Object>:它们定义了包含Map的get和put方法的getter和setter
这是不使用继承的典型示例:您发现其他一些代码(即Jackson)正在将您的类视为其超类的实例,这不是您想要它做的.在这些情况下(以及一般情况下),通常使用组合而不是继承更好.
我建议重写模型类以包含地图,而不是扩展地图.你得到的控制力远远超过方式,结果模型不那么脆弱.如果您需要将模型视为a Map,则实现asMap呈现该视图的方法(或类似的东西).
| 归档时间: |
|
| 查看次数: |
3103 次 |
| 最近记录: |