JSON

    [Spring] x-www-form-urlencoded 요청 JSON 으로 변환하여 받기

    [Spring] x-www-form-urlencoded 요청 JSON 으로 변환하여 받기

    들어가며 스프링을 사용한 프로젝트에서 NHN KCP 결제 시스템을 연동하는 요구사항이 있었다. 우리 서버에서는 객체 필드명에 카멜 케이스를 사용하는데, 결제 서버에서는 스네이크 케이스로 보내주는 상황. 이를 @JsonProperty 로 매핑시키려고 했으나 해당 결제 서버에서 보내는 콜백 요청은 x-www-form-urlencded 를 사용 중이었다 따라서 Jackson 이 아닌 다른 컨버터가 사용되어 @JsonProperty 가 먹히지 않았다. 이를 커스텀 컨버터를 등록하여 JSON 으로 매핑시키도록 하여 해결해보자. 인코딩 application/x-www-form-urlencoded HTML 의 form 태그에서 서버에 전송할 때 주로 사용되는 방식이다. 말 그대로 데이터를 서버에 전송하기 전에 URL..

    [Spring] Jackson Module 을 이용한 Jackson 확장

    [Spring] Jackson Module 을 이용한 Jackson 확장

    Custom Serializer / Deserializer 를 만들어 Jackson Module 에 등록하고, 이를 통해 Jackson 을 확장하여 기본 JSON 처리 방식을 변경하는 방법에 대한 글입니다. 들어가며 Java Spring 서버를 개발하다보면 Jackson 이라는 라이브러리를 많이 들어봤을 것이다. Jackson 은 Java 진영에서 JSON 처리를 담당하는 라이브러리이다. Java 객체를 JSON 으로 직렬화, 혹은 반대로 역직렬화할 수 있는 데이터 바인딩 기능을 제공한다. 현재 REST API 처리 방식에 JSON 요청, 응답을 가장 많이 사용하기 때문에 중요한 라이브러리라 할 수 있다. 그래서인지 현재 스프링 프레임워크에도 Jackson 이 기본적으로 탑재되어 있기도 하다. Jacks..

    [Spring] 스프링 Custom Enum Deserializer 구현으로 JSON Enum null 로 파싱하기

    [Spring] 스프링 Custom Enum Deserializer 구현으로 JSON Enum null 로 파싱하기

    https://gengminy.tistory.com/48 [Spring] 스프링 Enum Validator Reflection 으로 개선 및 구현하기 https://gengminy.tistory.com/47 [Spring] 스프링에서 Enum 클래스 Validation 추가하기 (Enum JSON parse error 해결) 스프링에서 일반적으로 RequestBody 의 값을 Validation 하는 방법 스프링 MVC 에서 @Valid 어노테이션을 gengminy.tistory.com 앞서 스프링에서 Custom Enum Constraint Validator 를 Reflection 으로까지 구현했다. 하지만 딱 한 가지가 남았는데.... 보기 싫었던 다음과 같은 반복적인 코드가 있다. // Enum V..

    [Spring] 스프링에서 Enum 클래스 Validation 구현하기 (Enum JSON parse error 해결)

    [Spring] 스프링에서 Enum 클래스 Validation 구현하기 (Enum JSON parse error 해결)

    스프링에서 일반적으로 RequestBody 의 값을 Validation 하는 방법 스프링 MVC 에서 @Valid 어노테이션을 명시해주면 컨트롤러에서 해당 값에 대해 미리 Validation 해줘서 값이 들어오게 된다. JAVAX 에서 @NotBlank, @NotNull, @Positive 등등 원시 타입에 대해서는 여러 가지 기본 검증을 지원한다. 하지만 Enum 클래스에 대한 Validation 은 기본으로 지원하지 않는다. 그러면 어떤 식으로 처리해야 할까? 📌 Enum Validation 처리를 하지 않았을 경우 Enum 필드에 대해 Validation 처리하지 않는다면 Enum 클래스에 속하지 않은 값이 Request 필드에 포함되면 JSON 값을 Enum 으로 올바르게 파싱하지 못하여 위 처럼..