빵구의 개발 메꾸기

Jackson 라이브러리 ObjectMapper 활용 본문

BACK-END/JAVA

Jackson 라이브러리 ObjectMapper 활용

bkjo94 2022. 5. 20. 23:55

Object를 String 형태의 JSON으로 변환하거나 반대로 String 형태의 JSON을 Object로 변환해서 사용해야 하는 경우가 많은데 Jackson 라이브러리의 ObjectMapper를 활용하는 방법에 대해 알아보자.

 

 

 

<ObjectMapper가 있는 Jackson 라이브러리 추가>

① maven repository 사이트에서 jackson 라이브러리에 대해 gradle 탭에 있는 내용을 build.gradle 파일의

    dependencies에 종속성을 추가해주도록 한다.

 

 

 

 

<Object -> String 형태의 JSON 또는 String 형태의 JSON -> Object 변환>

① ObjectMapper를 활용하기 위해 Object를 만들고 Animal Object도 생성한 뒤 property들을 set해준다.

② Animal의 Object를 String 형태의 JSON으로 변환해준다. (ObjectMapper는 get 메서드를 활용)

③ String 형태의 JSON을 Animal의 Object로 변환해준다. (ObjectMapper는 default 생성자가 필요)

④ 정상적으로 변환이 된 것을 볼 수 있다.

 

 

 

<ObjectMapper 사용 시 주의해야 할 VO의 get메서드 에러 발생>

① ObjectMapper는 get 메서드를 활용하기 때문에 VO에 일반 property들에 대한 getter를 제외한 get이 들어간

    커스텀 메서드를 만들게 되면 에러가 발생한다.

② 커스텀 메서드인 defaultAnimal 메서드에 대해 에러가 발생한 것을 보여주고 있다.

 

 

 

<String 형태의 JSON -> Map 변환 또는 Map -> String 형태의 JSON>

① String 형태의 JSON을 Map으로 변환해준다.

② Map을 String 형태의 JSON으로 변환해준다.

③ 정상적으로 변환이 된 것을 볼 수 있다.

 

 

 

<VO에 List 형태의 property가 있는 경우>

① User Object와 Animal Object를 여러개 만들고 property들에 대해 set한 뒤 User Object의 animals property에

    넣어준다.

② User Object를 String 형태의 JSON으로 변환해준다.

③ List 형태인 animals property에 대해서도 String 형태의 JSON ARRAY로 정상적으로 변환이 된 것을 볼 수 있다.

 

 

 

<JsonNode, ObjectNode 사용 방법>

① String 형태의 JSON을 tree 형태로 읽고 JsonNode로 변환 후 데이터의 key 값으로 접근해서 value 값을

    뽑는다.

② List 형태의 animals를 가져오고 ArrayNode로 casting 한 뒤 List<Animal>로 변환해준다.

③ key에 대한 value 값을 변경하고 싶은 경우 JsonNode를 ObjectNode로 casting 한 뒤 셋팅한다.

    ObjectNode의 toPrettyString 메서드를 호출하게 되면 JSON 데이터의 구조를 보기 쉽게 구조화 해준다.

④ 정상적으로 변환이 된 것을 볼 수 있다.

Comments