这是一个java类的例子。我需要所有的字段在反序列化之后都是不可变的。
如果我将字段类型设置为ImmutableMap
,就可以做到这一点,但是我可以指示Jackson将其反序列化为ImmutableMap
,而不更改字段类型Map
吗?
public class AdCategoryConfigImmute {
private ImmutableMap<String, List<Integer>> sceneMap; // type is immutable explicitly
private Map<String, List<Integer>> trMap;
}
1条答案
按热度按时间ffscu2ro1#
为了指定需要反序列化的特定字段的子类型,可以使用
@JsonDeserialize
注解。需要通过其as
属性提供所需类型。但是,由于这里需要Guava库中的
ImmutableMap
(或其子类型),因此需要注册Jackson的GuavaModule
(链接到Maven repository),否则反序列化将失败。***注意:*如果您使用Sping Boot ,它会在应用程序启动时配置
ObjectMapper
时为您注册GuavaModule(无需手动注册模块,您只需添加一个依赖项)。