[Jackson] ObjectMapper 기본 사용법
개요
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);