RestAPI가 유명해지고 많이 사용하면서 Client-Server간에 Json 형식으로 데이터를 주고 받는 경우가 많아졌다. 이 경우 Database와 Java 사이의 패러다임이 다른 것과 비슷하게 Json 방식과 Java 방식이 다르다. 예를 들어, Json의 기본 표기법은 'snake_case'인 반면에 Java의 기본 표기법은 'camelCase'이다. 이를 해결하는 방법 중 하나로 @JsonProperty
어노테이션 사용법이 있다.
@JsonProperty는 Json 안의 property 이름을 나타내기 위한 어노테이션이다.
@Data
public class Student {
@JsonProperty("my_name")
private String myName;
@JsonProperty("my_age")
private String myAge;
@JsonProperty("my_country")
private String myCountry;
}
위처럼 Java의 Json 데이터를 매핑할 객체의 field에 어노테이션을 사용해서 표시한 경우, "my_name"으로 들어온 Json property 값이 "myName" field 값으로 매핑될 수 있다.
하지만, 만약 field가 50개, 100개 처럼 많은 경우 일일이 @JsonProperty를 붙이는 것은 비효율적이다. 이럴 때 사용하는 것이 @JsonNaming
이다.
@Data
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Student {
private String myName;
private String myAge;
private String myCountry;
}
이렇게 class 자체에 @JsonNaming으로 하고 Naming 전략을 선택하면 그에 따른 매핑을 해준다. 위 코드에선 모든 field가 snake_case로 매핑된다.