我使用@JsonProperty
通过Spring RestTemplate
的{{1}}通过JSON序列化数据。
exchange
我需要此属性来识别属性名称的大写和小写形式,即应识别在@JsonProperty("ip_address")
public String ipAddress;
@JsonProperty("port")
public Integer port;
中设置的“ ip_address”和“ IP_ADDRESS”。
我尝试了以下方法,但均无效果:
@JsonProperty
不适用于GitHub中报告的existing issue。应用于模型类中的每个属性时,也不起作用。
use MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES
on an ObjectMapper
bean。
This example using ObjectMapper
and RestTemplate
甚至在前面项目中带有示例的组合代码也无法使用。
这三个参数各自的属性都具有@JsonFormat(with=JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)
值,因为我禁用了模板的未知属性(也称为大小写不同)的错误。
答案 0 :(得分:0)
您可以告诉杰克逊将您所有的财产名称都转换为例如SNAKE_CASE变体并相应地设置您的@JsonProperty
:
示例:
在春季启动时,在application.properties中设置属性
spring.jackson.property-naming-strategy=SNAKE_CASE
或者您可以仅针对单个班级启用它,并使用以下注释班级:
@JsonNaming(PropertyNamingStrategy.SNAKE_CASE.class)
然后设置@JsonProperty:
@JsonProperty(vale="ip_address")
答案 1 :(得分:0)
我能够在不更改原始pojo类@JsonProperty配置的情况下完成此工作。在您链接到的“对象映射器和休息模板”示例中,使用不区分大小写的映射器功能来代替“属性命名”策略
ObjectMapper映射器=新的ObjectMapper(); mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);
答案 2 :(得分:0)
Kishore Diyyana:
对于 Spring Boot 应用程序忽略 JSON 属性名称的大小写:
步骤 1:确保您的 POJO/Domain/Model 类具有带相应参数的构造函数,删除任何零参数构造函数。 第 2 步:添加 Jackson lib 作为依赖项 例如:
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.6.5</version>
</dependency>
第 3 步:在 application.properties 文件中启用,如下所示 spring.jackson.mapper.accept_case_insensitive_properties=true