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

Posted

技术标签:

【中文标题】在使用 SpringBoot 开发的 REST API 中映射到 Java 对象时,使 JSON 有效负载字段不区分大小写【英文标题】:Make JSON payload fields case insensitive when mapping to Java Object in REST API developed using SpringBoot 【发布时间】:2015-09-04 15:36:09 【问题描述】:

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

有效载荷 "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;
    

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

问候, 拉克什

【问题讨论】:

我想在 spring mvc 中做。有什么想法吗? 【参考方案1】:

好吧,如果它是 Spring Boot 应用程序,您可以在 application.properties 文件中使用它: spring.jackson.mapper.accept_case_insensitive_properties=true

或者如果你使用 yaml:

spring:
  jackson:
    mapper:
      accept_case_insensitive_properties: true

【讨论】:

我想在 spring mvc 中做。有什么想法吗? @parladneupane 这可能会有所帮助:baeldung.com/properties-with-spring 我需要使用连字符:spring.jackson.mapper.accept-case-insensitive-properties=true 对于在application.properties 中使用的任何人,请改用spring.jackson.mapper.accept-case-insensitive-properties=true .yml 中也可以使用连字符:spring.jackson.mapper.accept-case-insensitive-properties: true【参考方案2】:

我最近通过 Annotation config 找到了解决方案:

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>

祝你好运。

【讨论】:

以上是关于在使用 SpringBoot 开发的 REST API 中映射到 Java 对象时,使 JSON 有效负载字段不区分大小写的主要内容,如果未能解决你的问题,请参考以下文章

Rest接口和Thymeleaf的两个坑

在使用SpringBoot开发的REST API中映射到Java Object时,使XML有效内容字段不区分大小写

在 Spring Data Rest 中启用跨源请求

在带有 MVC REST API 的 SpringBoot 项目中返回 406 响应

使用 SpringBoot 配置文件模拟 REST API 调用

springboot项目使用WireMock伪造REST服务