我要求接收包含下划线的键的JSON,甚至忽略单词的大小写。例如Device_control_API,device_control_API,Device_Control_API,device_control_aPI等都应映射到同一属性。
现在,我知道我可以使用@JsonSetter创建所有设置方法的多个设置方法,但我认为这样不好。
我看过其他问题,建议使用mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true)
让ObjectMapper对象忽略大小写,但是我不能这样做,因为我正在使用spring-boot并希望我的REST API以POJO对象的形式获取有效负载。
是否有任何注释或某种方式
请帮忙 !!!
最佳答案
我不认为您可以使用MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES
作为注释。从here获得了以下信息
杰克逊开/关功能:MapperFeature
Jackson定义了一组每个映射器配置,只能
在使用ObjectMapper之前定义-意味着这些设置可以
不能根据每个请求即时更改。他们配置
POJO内省的基本细节以及生成的对象
(序列化器,解串器以及相关的)被大量缓存。如果你需要
对于这些不同的设置,您必须使用单独的ObjectMapper
实例。
而MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES
是配置之一。
但是也许自定义反序列化类可以为您提供帮助。关于Stackoverflow有很多教程和问题。
我发现了一些:
Jackson: using @JsonSerialize (or @JsonDeserialize) annotation to register a custom serializer (or deserializer)
Right way to write JSON deserializer in Spring or extend it