使用Spring RestTemplate忽略使用@JsonProperty声明的JSON属性案例

zqdjd7g9  于 2022-12-02  发布在  Spring
关注(0)|答案(3)|浏览(192)

我使用@JsonProperty通过SpringRestTemplateexchange序列化JSON中的数据。

@JsonProperty("ip_address")
public String ipAddress;

@JsonProperty("port")
public Integer port;

我需要此属性来识别属性名称的大写和小写版本,即应该识别在@JsonProperty中设置的“ip_address”和“IP_ADDRESS”。
我尝试了以下方法,但都不起作用:

  • @JsonFormat(with=JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)在类级别上应用时不适用于GitHub中报告的existing issue。当应用于模型类中的每个属性时也不适用。
  • 是的。
  • This example using ObjectMapper and RestTemplate也不起作用,甚至与组合代码与前面的项目的例子。

这三个模板的属性都只有null值,因为我禁用了模板的未知属性错误(也就是不同的字母大小写)。

4ngedf3f

4ngedf3f1#

您可以告诉Jackson将所有属性名称转换为SNAKE_CASE等变量,并相应地设置@JsonProperty
示例:
在Spring Boot 时在www.example.com中设置该属性application.properties

spring.jackson.property-naming-strategy=SNAKE_CASE

或者您可以只为单个类启用它,并使用以下内容对类进行注解:

@JsonNaming(PropertyNamingStrategy.SNAKE_CASE.class)

然后设置@JsonProperty:

@JsonProperty(vale="ip_address")
vaqhlq81

vaqhlq812#

我能够在不更改我的原始pojo class @JsonProperty配置的情况下使其工作。
对象Map器Map器= new对象Map器();如果是,则将该属性设置为“是”。

68bkxrlz

68bkxrlz3#

对于忽略JSON属性名称大小写的Sping Boot 应用程序:第1步:确保POJO/Domain/Model类有一个带参数的构造函数,并删除任何零参数构造函数。第2步:将Jacksonlib添加为依赖项Ex:

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
    <version>2.6.5</version>
</dependency>

步骤3:在www.example.com文件中启用application.properties,如下所示spring.Jackson.mapper.accept_case_sensitive_properties=true

相关问题