본문 바로가기

Languages/Java

Object Mapper

매퍼

object → object

매퍼 라이브러리

  1. ObjectMapper
  2. ModelMapper
  3. MapStruct

Object Mapper

  • JSON 컨텐츠를 Java 객체로 deserialization 하거나 Java 객체를 JSON으로 serialization 할 때 사용하는 Jackson 라이브러리의 클래스이다.
  • ObjectMapper는 생성 비용이 비싸기 때문에 bean/static으로 처리하는 것이 좋다.

ObjectMapper객체를 다음과 같이 생성한다.

ObjectMapper objectMapper = new ObjectMapper();

직렬화를 하기 위해서는 getter가 필요하다.

역직렬화를 하기 위해서는 생성자가 필요하다.

class User{
    private String name;
    private String email;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }
}

Java Object → JSON (직렬화)

Object to JSON File

objectMapper.writeValue(new File("user.json"), user);

Object to JSON String

String userAsString = objectMapper.writeValueAsString(user);
{"name":"김가나","email":"test@example.com"}

JSON → Java Object (역직렬화)

역직렬화 시킬 클래스에 JSON을 파싱한 결과를 전달할 생성자가 있어야 한다.

String json = "{ \"name\" : \"김가나\", \"email\" : \"test@example.com\" }";
User user = objectMapper.readValue(json, User.class);

JSON File to Object

User user = objectMapper.readValue(new File("user.json"), User.class);

JSON Array String to Java List

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

JSON String to Java Map

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

Config

Jackson Library의 Basic Features에 추가적으로 유용한 기능를 사용할 수 있습니다.

JSON과 Object에 대해서 커스터마이징한 Serialize/Deserialize가 가능한 기능을 사용할 수 있습니다.

'Languages > Java' 카테고리의 다른 글

WeakHashMap과 약한 참조  (0) 2023.08.31
예외처리  (0) 2023.05.24
Primitive Type, Reference Type  (0) 2023.04.25
JVM과 GC  (0) 2023.04.12
[Java] HashMap, HashTable, HashSet  (0) 2023.04.12