[JSON] Jackson으로 JSON으로 처리하며 생긴 문자열 문제

김서영·2022년 7월 6일
0

에러일기

목록 보기
7/7

핀테크 스타트업에서 api 개발을 하면서 Java object를 JSON 형식으로 처리할 일이 많았다.

나는 사이드 프로젝트에서도 Jackson을 주로 사용하곤 했는데, 사실 사이드 프로젝트에서는 우리가 모든 api를 개발하다 보니, 문자열의 모양(Lowercase, Uppercase, Camelcase 등) 이 크게 상관없었다.

하지만, 다른 업체의 api를 사용하게 되면, 그 쪽 api에 맞춰야 한다. 그러면서 문제가 발생하게 되는데...

Jackson

Springboot 개발을 하다 보면, 쌩 문자열인 plain/text 형식으로 보내도 상관은 없으나, 보통은 데이터 구조를 표현하는 방식인 XML 또는 JSON 형태로 많이 보내게 된다.

데이터의 구조를 표현하는 이유는 데이터 표현도 있지만, 사실상 데이터를 사용하는 대상이 편하게 사용하기 위해서이다. JacksonJSON 데이터 구조를 처리해주는 라이브러리다.

나는 우리 회사와 다른 업체 간의 api를 이용하면서, DTO → JSON / String → JSON으로 처리에 jackson이 필요했다.

보통은 아래 코드처럼 바꿔주고는 한다.

Object Mapper = new ObjectMapper()
JSONNode node = new JSONNode() 

하지만 문제가 발생했다.
JSON으로 변환 시에, Jackson은 마음대로 uppercase를 lowercase로 바꿔버린다는 것이다.

{”SECR_KEY” : “ABC”}

예를 들어 위와 같은 JSON 형식의 string이 있을 때

{”secr_KEY” :”ABC”}

이런 식으로 key값을 바꿔버리는 것이에요…

해결

구글링 키워드는 ‘Jackson upper snake case’
{”SECR_KEY” : “ABC”} 이런 식으로 출력하고 싶다면…

기존

 private string SECR_KEY;

변경

 @JsonProperty("SECR_KEY")
    private string secr_key;
profile
하지만 저는 이겨냅니다. 김서영이죠?

0개의 댓글