杰克逊 - 忽略蛇案例中的案例

时间:2016-07-13 12:37:31

标签: java json spring-boot jackson

我要求使用包含下划线的键接收JSON,甚至忽略单词中的大小写。对于例如Device_control_API,device_control_API,Device_Control_API,device_control_aPI等都应映射到同一属性。

现在我知道我可以使用@JsonSetter创建多个setter方法,并且可以使用所有组合,但我认为这不会很好。

我看到其他问题建议使用mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true) 对于ObjectMapper对象忽略大小写,但我不能这样做,因为我使用spring-boot并希望我的REST API以POJO对象的形式获取有效负载。

是否有任何注释或某种方法可以这样做

请帮助!!!

2 个答案:

答案 0 :(得分:2)

我认为您不能使用MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES作为注释。从here

获得以下信息
  

Jackson开/关功能:MapperFeature

     

杰克逊定义了一组per-mapper配置,它只能是   在使用ObjectMapper之前定义 - 意味着这些设置可以   不得根据要求即时更改。他们配置   基本的POJO内省细节,以及由此产生的构建对象   (序列化程序,反序列化程序,相关)是高度缓存的。如果你需要   不同的设置,你必须使用单独的ObjectMapper   实例

MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES是其中一个配置。

但也许自定义反序列化类可以帮助你。 Stackoverflow上有很多教程和问题。

我发现了一些:

答案 1 :(得分:1)

还有此属性:

spring.jackson.mapper.accept_case_insensitive_properties=true