在使用 SpringBoot 开发的 REST API 中映射到 Java 对象时,使 JSON 有效负载字段不区分大小



我正在研究使用SpringBoot应用程序开发的REST API。在这里,我想使有效负载(JSON)中的字段在映射到Java对象时不区分大小写。下面是我的代码。

有效载荷

{"limit":1,"name":"MATTHEW PHILLIPS"}

请求对象

private String limit;
private String name;
public String getLimit() {
      return limit;
    }
    public void setLimit(String limit) {
        this.limit = limit;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

我使用 Spring 注释直接将 JSON 有效负载映射到 java 对象@RequestBody。我在这里的问题是,如何使 java 对象映射到忽略大小写的字段。

问候拉克什

好吧,如果它的 Spring 启动应用程序,您可以在application.properties文件中拥有它: spring.jackson.mapper.accept_case_insensitive_properties=true

或者,如果您使用 YAML:

spring:
  jackson:
    mapper:
      accept_case_insensitive_properties: true

我最近通过注释配置找到了一个解决方案:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
@Configuration
public class Config {
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
        return mapper;
    }
}

我正在使用这些依赖项:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
</parent>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-jaxb-annotations</artifactId>
        <version>2.6.5</version>
    </dependency>

祝你好运。

对我来说

,最简单的解决方案是在我的requestBody的类定义中使用com.fasterxml.jackson.annotation.JsonFormat注释(我使用的是2.5.0 spring-boot,但它是一个更快的xml注释,所以它可能不相关):

@JsonFormat(with = {JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES})

最新更新