위와 같은 문제가 발생했습니다.
snakecasestrategy deprecated로 인해서 중간에 줄이 그어졌습니다.
해결하기 전에 어노테이션과 snake case가 무엇인지 정리해보려고 합니다.
그리고 @JsonNaming의 의미와 deprecated에 대한 해결방법을 정리하겠습니다.
프로그래밍에서 변수명을 표현할 때 공백을 어떻게 메우는지에 따라 용어가 구분되어 있습니다.
변환 전 : My Visitor Count
변환 후
POST API와 PUT API를 사용할 때 Json을 통해 RequestBody를 받게 됩니다.
문제는 Json에서는 Snake Case방식을 사용하고
Java에서는 Camel Case 방식을 사용한다는 것입니다.
이렇게 변수 네이밍 방식이 다를 경우 Java에서는 Json으로 데이터를 보내거나 받을 때 제대로 받지 못하는 문제가 발생합니다.
이를 해결해주는 것이 @JsonNaming과 @JsonProperty라는 어노테이션입니다.
# UserDto.java
private String name;
private int age;
private List<CarDto> carList;
# CarDto.java
private String name;
private String carNumber;
{
"name" : "steve",
"age" : 20,
"car_list" : [
{
"name" : "BMW",
"car_number" : "11가 1234"
},
{
"name" : "A4",
"car_number" : "22가 3456"
}
]
}
name='steve',
age=20,
carList=null
@JsonProperty("car_number")
private String carNumber;
@JsonNaming(value = PropertyNamingStrategies.SnakeCaseStrategy.class)
public class UserDto {
private String name;
private int age;
private List<CarDto> carList;
stack overflow를 통해서 해결방법을 찾았습니다.