繁体   English   中英

使用SpringBoot开发的REST API映射到Java Object时使JSON payload字段不区分大小写

[英]Make JSON payload fields case insensitive when mapping to Java Object in REST API developed using SpringBoot

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

有效载荷

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

请求 Object

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;
    }

我 map JSON payload 到 java Object 直接使用@RequestBody Spring 注解。 我的问题是如何将 java Object 到 map 设置为忽略大小写的字段。

问候,拉凯什

好吧,如果它的Spring Boot应用程序你可以在你的application.properties文件中有这个: spring.jackson.mapper.accept_case_insensitive_properties=true

或者如果你使用yaml:

spring:
  jackson:
    mapper:
      accept_case_insensitive_properties: true

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

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 的 class 定义中使用 com.fasterxml.jackson.annotation.JsonFormat 注释(我使用的是 2.5.0 spring-boot,但它是一个 fasterxml 注释,因此它可能不相关):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM