https://lemontia.tistory.com/905
화면단의 데이터는 스네이크 케이스로 작성되어 있음
ex) user_name
서버단에서의 VO는 카멜케이스로 작성되어 있음
ex) userName
화면단에서 user_name 을 전송했을때 서버단의 VO에서 userName으로 받고자 한다면
아래와 같이 일일이 매핑해줘야함
ex)vo.setUserName(request.getParameter("user_name"));
하나두개야 해줄수 있지만 ..많아질경우에는 하기가 힘들어짐
[ 사용방법 ]
※ 스프링부트에는 기본적으로 추가되어 있음
=================================================================================================================
class VO{
@JsonProperty("user_name")
private String userName;
}
=================================================================================================================
Post 방식으로 전달받고 @RequestBody 어노테이션으로 VO에 매핑을 해줘야 @JsonProperty 가 정상적으로 작동함
=================================================================================================================
@PostMapping("/test")
public void test(@RequestBody VO vo){
=================================================================================================================
@JsonProperty("user_name") 로 변수위에 하나씩 작성하는것은 단순반복노동이며, 오타가 발생할 수도 있음
그럴때 아래의 어노테이션을 클래스명 상단에 선언해주면 변수위에 @JsonProperty("user_name") 를 작성하지 않아도 모든 변수에 적용이 됨
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
=================================================================================================================
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class VO {
private String userName;
}
=================================================================================================================
@JsonInclude(Include.NON_NULL)
위의 옵션을 적용해도 되고
아니면 yml 파일에 아래와 같이 기재
Spring :
jackson :
default-property-inclusion: NON_NULL
https://findmypiece.tistory.com/241
https://jaime-note.tistory.com/15
Object Mapper 로 json 데이터를 파싱할때
하위 Map 이나 List 구조에 데이터를 매핑하고 싶으면 @JsonCreator 을 사용하면 된다
@JsonCreator 어노테이션의 mode 속성은 한 개의 파라미터냐(DELEGATING), 여러 개의 파라미터냐(PROPERTIES)에 따라 선택하거나 자동으로 설정되도록 기본값(DEFAULT)으로 둘 수 있다. 일반적으로 기본값으로 두고 사용해도 무리는 없다.