개발/Java

[Jackson] ObjectMapper 기본 사용법

devy1540 2023. 9. 17. 21:58

개요

Json 형식은 오늘날 많이 사용하는 포맷 규격 중 하나입니다. 자바 진영에서는 해당 Json을 사용하기 위해 Gson, ObjectMapper, SimpleJson 등 여러 라이브러리가 있습니다. 이 중, Jackson에서 제공해주는 라이브러리, ObjectMapper에 대해 알아볼 수 있도록 합니다.

사용

의존성 추가

https://mvnrepository.com 에서 jackson-databind를 검색한 뒤 사용하면 됩니다.

Maven

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

Gradle

implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'

초기설정

ObjectMapper objectMapper = new ObjectMapper();

다음과 같이 매개변수가 없는 기본생성자로 ObjectMapper를 생성할 수 있습니다.

이에 대해서 조금 자세하게 알아보자면, ObjectMapper를 생성하는 생성자 코드를 확인하면 됩니다.

별도의 매개변수가 없더라도 내부 코드레벨에서 null로 생성자를 불러 생성됨을 알 수 있습니다.

다음 글에서 objectMapper 초기화 할 때 좀 더 자세히 알아 볼 수 있도록 하고 이번엔 사용방법에 대해 알아 볼 수 있도록 합니다.

Json을 JavaObject로 변환하기

Json을 Java의 Object로 변환하는 방법입니다.

ObjectMapper에서 제공되는 메소드인 readValue 를 이용하여 Json을 JavaObject로 변환할 수 있습니다.

아래 사진은 매개변수에 맞춰 정의된 readValue 목록입니다.

 

사용예시는 다음과 같습니다.

아래와 같은 방법으로 사용에 접근성을 두면 되겠습니다.

ObjectMapper objectMapper = new ObjectMapper();
String json = """
        {
            "name": "devy",
            "age": 29
        }
        """;

// String to JavaObject
User user = objectMapper.readValue(json, User.class);

//String to JavaObject with TypeReference
TypeReference<User> userType = new TypeReference<>(){};
User user1 = objectMapper.readValue(json, userType);

//JsonFile to JavaObject
User user2 = objectMapper.readValue(new File("user.json"), User.class);

System.out.println(user);
System.out.println(user1);
System.out.println(user2);

 

Json을 JsonNode로 변환하기

Json을 Jackson 라이브러리에서 제공하는 JsonNode 객체로 변환하는 방법입니다.

JsonNode는 Jackson에서 제공해주는 json tree 구조를 가진 객체입니다.

마치 json을 객체처럼 사용할 수 있도록 기능을 제공합니다.

ObjectMapper에서 제공되는 메소드인 readTree를 이용하여 Json을 JsonNode로 변환할 수 있습니다.

 

아래 사진은 매개변수에 맞춰 정의된 readTree 목록입니다.

 

사용예시는 다음과 같습니다.

아래와 같은 방법으로 사용에 접근성을 두면 되겠습니다.

ObjectMapper objectMapper = new ObjectMapper();
String json = """
        {
            "name": "devy",
            "age": 29
        }
        """;

JsonNode jsonNode = objectMapper.readTree(json);

System.out.println(jsonNode.toPrettyString());

 

JavaObject를 Json으로 변환하기

java의 object를 Json으로 변환하는 방법입니다.

ObjectMapper에서 제공하는 wrtieValue 또는 writeValueAsString을 이용하여 Java의 Object를 json으로 변환할 수 있습니다.

사용예시는 다음과 같습니다.

User user = new User("name", 29);
String jsonString = objectMapper.writeValueAsString(user);

System.out.println(jsonString);