💻 공부 기록/☕ Java

Java | ObjectMapper

MVMT 2023. 1. 17. 10:00

개요

Kakao REST API 를 사용하던 중 Json 형태로 값을 다루는 과정에서 ObjectMapper 를 알게 되었다.

Java 로 Parsing 하는 과정을 배운다.

  1. "Java Object" =Serialize=> "JSON"
  2. "JSON" =Deserialize=> "Java Object"

 

Maven 설정

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>

 

예시 | User Object

public class User {

    private String name;
    private int age;
    
    public User(String name, int age) {
    	this.name = name;
        this.age = age;
    }
    
    public String getName() {
    	return name;
	}
    
    public int getAge() {
    	return age;
	}
}

 

예시 | Convert "Java Object" to "JSON

public class TestConvert {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		ObjectMapper objectMapper = new ObjectMapper();
		User user = new User("Ryan", 30);

		objectMapper.writeValue(new File("user.json"), user);
		// 파일 출력: user.json
		// {"name":"Ryan","age":30}
		// 문자열 출력
		String userAsString = objectMapper.writeValueAsString(user);
		// {"name":"Ryan","age":30}

	}

}

예시 | Convert "JSON" to "Java Object"

더보기
// String to Object
String json = "{ \"name\" : \"Ryan\", \"age\" : 30 }";
User user = objectMapper.readValue(json, User.class);
// JSON File to Object
User user = objectMapper.readValue(new File("user.json"), User.class);
// JSON URL to Object
User user = objectMapper.readValue(new URL("file:user.json"), User.class);

예시 | Convert "JSON" to "Jackson JsonNode"

더보기
String json = "{ \"name\" : \"Ryan\", \"age\" : 30 }";
JsonNode jsonNode = objectMapper.readTree(json);
String name = jsonNode.get("name").asText();// Ryan
int age = jsonNode.get("age").asInt();// 30

예시 | Convert "JSON Array String" to "Java List"

더보기
String jsonArr = "[{\"name\":\"Ryan\",\"age\":30},{\"name\":\"Jake\",\"age\":20}]";
List<User> users = objectMapper.readValue(jsonArr, new TypeReference<>() {});

예시 | Convert "JSON String" to "Java Map"

더보기
String jsonArr = "{\"name\":\"Ryan\",\"age\":30}";
Map<String, Object> user = objectMapper.readValue(jsonArr, new TypeReference<>() {
});

 


 

일단 ObjectMapper 를 다루는 방법에 대해서 알아보았다.

여유가 된다면 Custom Serializer or Deserializer 에 대해서도 정리해서 공부해보자.

 

 

출처 | RyanGomdoriPooh