참고 블로그

https://cbw1030.tistory.com/315

https://aandi.tistory.com/24

JSON ↔ Java 디폴트

보통 JSON은 snake_case를 사용하고 Java는 camelCase를 사용하기 때문에 두개의 형식을 변환해주는 과정이 필요하다.

그때에 사용할 수 있는 라이브러리가 Jackson이다.

Maven Repository에서 디펜던시를 추가시켜주자.

사용법1 - 필드 각각에 적용

사용할 Dto 클래스에 아래와 같이 적용한다

@Data
public class Student {

    @JsonProperty("my_name")
    private String myName;

    @JsonProperty("my_age")
    private String myAge;

    @JsonProperty("my_country")
    private String myCountry;
}

사용법2 - DTO 전체에 네이밍 전략 적용

@Data
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Student {
    private String myName;
    private String myAge;
    private String myCountry;
}

위와 같이 설정하면 알아서 모든 필드가 camelCase에서 snake_case로 변환된다.

디폴트가 아닐 때

위와 같은 설정은 user_id 나 user_name을 키값으로 요청을 받고, 응답을 보낼 수 있지만

user_id / user_name으로 요청을 받고, 다시 userId / userName 형태의 json string으로 응답을 보내거나 할 수 없다.

하지만! 구글링으로 좀 더 찾아보니 jackson의 ObjectMapper 를 사용하면 손쉽게 변경할 수 있었다.

jackson을 사용하기 위해서는 dependencies를 추가해야한다.

다만, spring boot을 사용하고 있다면 따로 추가할 필요는 없다.