programing

SpringBoot을 사용하여 개발된 REST API에서 Java Object에 매핑할 때 JSON payload 필드를 대소문자 구분 없이 만듭니다.

lastcode 2023. 10. 9. 23:18
반응형

SpringBoot을 사용하여 개발된 REST API에서 Java Object에 매핑할 때 JSON payload 필드를 대소문자 구분 없이 만듭니다.

저는 스프링부트 어플리케이션을 이용하여 개발한 REST API를 작업하고 있습니다.여기서는 Java Object에 매핑할 때 payload(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;
    }

JSON 페이로드를 java Object에 직접 매핑합니다.@RequestBody스프링 주석.여기서 제 질문은 java Object를 어떻게 하면 케이스를 무시하는 필드에 매핑할 수 있을까 하는 것입니다.

안녕, 라케시

스프링부트 애플리케이션이라면 이 애플리케이션을 사용할 수 있습니다.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>

행운을 빌어요.

저에게 가장 간단한 솔루션은 com.fasterxml.jackson.notation을 사용하는 것이었습니다.my requestBody의 클래스 정의에 있는 JsonFormat 주석(2.5.0 spring-boot를 사용하고 있지만 더 빠른 xml 주석이므로 관련이 없을 수 있습니다):

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

언급URL : https://stackoverflow.com/questions/30924816/make-json-payload-fields-case-insensitive-when-mapping-to-java-object-in-rest-ap

반응형