cbw1030
기록하는 공간
cbw1030
전체 방문자
오늘
어제
  • 전체보기 (101)
    • Programming (99)
      • Java (19)
      • Servlet (10)
      • Spring Framework (13)
      • Javascript (22)
      • AWS (2)
      • 네트워크 (8)
      • 데이터베이스 (13)
      • 리눅스 (3)
      • 블록체인 (7)
      • 용어 정리 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 생활코딩
  • 삼성SDS
  • 인공지능
  • javascript
  • 브라이틱스
  • Brightics
  • Brightics AI
  • 브라이틱스 스튜디오
  • 머신러닝
  • 삼성SDS 브라이틱스
  • react
  • beautifulsoup
  • Brightics Studio
  • 데이터 사이언스
  • 차원축소
  • 브라이틱스 튜토리얼
  • 데이터분석
  • 크롤링
  • 브라이틱스 스튜디오 사용법
  • web

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
cbw1030

기록하는 공간

Programming/Spring Framework

[스프링부트] @JsonNaming, @JsonProperty는 언제 사용할까?

2021. 5. 12. 23:04
반응형

@JsonNaming, @JsonProperty의 사용법을 소개하기에 앞서 사용할 코드를 작성하도록 하자.

json으로 넘어오는 값이 아래와 같다고 가정하자(post든 put이든 ..)

{
    "my_name": "kevin",
    "my_age": 20,
    "my_country": "korea"
}

 

자바 Entity는 다음과 같다고 가정하자.

@Data
public class Student {

    private String myName;
    private String myAge;
    private String myCountry;

}

 

컨트롤러는 다음과 같다.


@RestController
@RequestMapping("/api")
public class StudentController {

    public void post(@RequestBody Student student) {
        System.out.println(student);
    }
}

POST로 넘어오는 JSON 데이터는 스네이크 케이스로 이루어져 있는 반면에 자바 엔티티는 케멀 케에스로 이루어져 있다.
이러한 경우에는 컨트롤러 단에서 JSON 데이터와 자바 엔티티를 매핑시켜준다고 해도 Key가 일치하지 않아 값을 제대로 받아올 수 없다.

그래서 이를 해결하기 위해 @JsonProperty, @JsonNaming을 사용하고자 한다.
사용하기 위해 Jackson 라이브러리를 사용해야 하는데 com.fasterxml.jackson.core 패키지를 maven dependencies에 주입하면 된다.

@JsonProperty

@JsonProperty를 사용하여 key를 매핑시켜줄 수 있다.

@Data
public class Student {

    @JsonProperty("my_name")
    private String myName;

    @JsonProperty("my_age")
    private String myAge;

    @JsonProperty("my_country")
    private String myCountry;

}

위처럼 각각 @JsonProperty를 붙여주면 된다.

그런데 만약 필드가 30개 이상만 되어도 코드가 엄청 길어질 우려가 있다.
이럴 때 사용하는 것이 @JsonNaming이다.

@JsonNaming

@Data
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Student {

    private String myName;
    private String myAge;
    private String myCountry;

}

위처럼 아예 class에 어노테이션을 붙여주면 매핑이 제대로 된다.

반응형
저작자표시 (새창열림)

'Programming > Spring Framework' 카테고리의 다른 글

[스프링부트] AWS S3에 파일 업로드 하기  (0) 2021.06.05
[스프링부트] fetch api post 전송 방법  (0) 2021.05.13
[스프링] IoC Container에 Bean 객체가 등록되는 방법 두 가지를 알아보자  (0) 2021.01.09
[스프링] DI(Dependency Injection) 의존성 주입에 대해 알아보자  (0) 2021.01.09
[스프링부트] postman을 활용한 간단한 RESTful 웹 서비스 만들기 - POST/DELETE 요청  (0) 2019.09.22
    'Programming/Spring Framework' 카테고리의 다른 글
    • [스프링부트] AWS S3에 파일 업로드 하기
    • [스프링부트] fetch api post 전송 방법
    • [스프링] IoC Container에 Bean 객체가 등록되는 방법 두 가지를 알아보자
    • [스프링] DI(Dependency Injection) 의존성 주입에 대해 알아보자
    cbw1030
    cbw1030

    티스토리툴바