반응형
1. Jackson 라이브러리란
- REST API 방식으로 서버와 클라이언트가 통신할 때, JSON 형식을 주로 사용함.
- 그런데 서버단에서는 Camel Case 방식을, 클라이언트단에서는 Snake Case 방식을 사용함.
- 따라서 서버단과 클라이언트단의 표현 방식이 다르기 때문에, 데이터의 key가 달라지는 경우 존재.
- 이러한 문제를 해결하기 위해 해당 라이브러리의 어노테이션 사용.
-> @JsonProperty, @JsonNaming
2. @JsonProperty, @JsonNaming
- Java 객체의 필드와 JSON 객체 속성 간의 매핑 정의.
→ Java 필드명과 JSON 속성명이 다를 경우에도 서로 연결 가능.
json으로 넘어오는 값이 아래와 같다고 가정하자.
{
“name” : “상품명”,
“price” : 가격,
“description” : “상품 설명”,
"categoryId" : 카테고리 id
}
자바 Entity는 다음과 같다.
public class Product {
private String name;
private int price;
private String description;
private int categoryId;
}
Controller는 다음과 같다.
@RestController
public class ProductController {
@PostMapping("/products")
public void save(@RequestBody String productName) {
productService.save(productName);
}
}
@JsonProperty를 사용해서 key를 제대로 매핑시켜주자 !!!
@Data
public class Product {
private String name;
private int price;
private String description;
@JsonProperty("category_id")
private int categoryId;
}
이렇게 필드마다 각각 위에 @JsonProperty를 붙여주면 되는데,
만약 필드가 많아지면 코드가 엄청 엄청 길어지겠지 ㅠㅠ
→ 그럴 때 사용하는 것이 @JsonNaming 이다!!
@JsonNaming
@Data
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Product {
private String name;
private int price;
private String description;
private int categoryId;
}
이렇게 아예 class 위에 어노테이션 붙여주면 매핑이 제대로 되는 것을 확인할 수 있다 ~
반응형
반응형
1. Jackson 라이브러리란
- REST API 방식으로 서버와 클라이언트가 통신할 때, JSON 형식을 주로 사용함.
- 그런데 서버단에서는 Camel Case 방식을, 클라이언트단에서는 Snake Case 방식을 사용함.
- 따라서 서버단과 클라이언트단의 표현 방식이 다르기 때문에, 데이터의 key가 달라지는 경우 존재.
- 이러한 문제를 해결하기 위해 해당 라이브러리의 어노테이션 사용.
-> @JsonProperty, @JsonNaming
2. @JsonProperty, @JsonNaming
- Java 객체의 필드와 JSON 객체 속성 간의 매핑 정의.
→ Java 필드명과 JSON 속성명이 다를 경우에도 서로 연결 가능.
json으로 넘어오는 값이 아래와 같다고 가정하자.
{
“name” : “상품명”,
“price” : 가격,
“description” : “상품 설명”,
"categoryId" : 카테고리 id
}
자바 Entity는 다음과 같다.
public class Product {
private String name;
private int price;
private String description;
private int categoryId;
}
Controller는 다음과 같다.
@RestController
public class ProductController {
@PostMapping("/products")
public void save(@RequestBody String productName) {
productService.save(productName);
}
}
@JsonProperty를 사용해서 key를 제대로 매핑시켜주자 !!!
@Data
public class Product {
private String name;
private int price;
private String description;
@JsonProperty("category_id")
private int categoryId;
}
이렇게 필드마다 각각 위에 @JsonProperty를 붙여주면 되는데,
만약 필드가 많아지면 코드가 엄청 엄청 길어지겠지 ㅠㅠ
→ 그럴 때 사용하는 것이 @JsonNaming 이다!!
@JsonNaming
@Data
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Product {
private String name;
private int price;
private String description;
private int categoryId;
}
이렇게 아예 class 위에 어노테이션 붙여주면 매핑이 제대로 되는 것을 확인할 수 있다 ~
반응형