반응형
Jackson 라이브러리
Jackson 라이브러리의 필요성
API 통신을 하다 보면 대부분 JSON 형태로 데이터를 주고받는다.
이때, FE와 BE가 서로 파라미터 작성 방식(카멜케이스, 스네이크케이스) 또는 파라미터 명이 다를 경우 데이터가 원활하게 파싱이 안될 수 있다.
더보기
카멜 케이스(CamelCase) vs 스네이크 케이스(snake_case)
카멜 케이스(Camel Case)
첫 글자는 소문자로, 중간 글자들은 대문자로 시작하는 표기법
memberId, memberName, memberPhoneNumber
스네이크 케이스(Snake Case)
첫 글자는 소문자로, 중간 글자들은 언더바(_)가 포함되는 표기법
member_id, member_name, member_phone_number
이 때 Jackson 라이브러리의 어노테이션을 사용하여 이를 매핑해줄 수 있다.
public class Product {
private int id;
private String name;
private int price;
private String description;
private int categoryId;
}
위와 같은 객체를 snake case로 전달해주고 싶은 경우를 예시로 들어보겠다.
@JsonProperty
@JsonProperty 어노테이션은 객체를 JSON 형식으로 변환할 때 Key의 이름을 설정할 수 있다. (객체 하나하나 각각 지정)
하나하나 지정해야 하므로 새로 네이밍할 필드의 개수가 1~2개 정도일 경우에 사용한다.
import com.fasterxml.jackson.annotation.JsonProperty;
public class Product {
private int id;
private String name;
private int price;
private String description;
@JsonProperty("category_id")
private int categoryId;
}
@JsonNaming
새로 네이밍할 필드의 개수가 전체 필드의 반 이상 등 너무 많을 경우에 사용한다.
@JsonNaming 어노테이션은 클래스에 사용하여 전체 멤버변수를 새로 네이밍 해준다.
- value에 원하는 case 전략클래스를 입력하면 된다.
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
@JsonNaming(value = PropertyNamingStrategies.SnakeCaseStrategy.class)
public class Product {
private int id;
private String name;
private int price;
private String description;
private int categoryId;
}
결과
2가지 어노테이션 모두 카멜 케이스로 요청을 보냈지만 스네이크 케이스로 잘 매핑이 되어 온 모습을 확인할 수 있다.
참고
반응형
'프레임워크 > Spring Boot' 카테고리의 다른 글
[Spring] DO(Entity), DTO (0) | 2024.05.16 |
---|---|
[Spring Boot] HttpMediaTypeNotAcceptableException 에러 해결 (0) | 2024.05.14 |
[JAVA] Iterator & Foreach (0) | 2024.05.10 |
[JAVA] 배열 vs 리스트 (0) | 2024.05.10 |
[JAVA] 로그 & 로그 레벨 (Log Level) (0) | 2024.05.10 |