我要求接收包含下划线的键的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

10-01 05:41