🖥️ Back-end

Jackson 이란?

승승장규 2025. 3. 5. 22:57

Java에서 JSON을 처리하기 위한 라이브러리로, JSON 데이터의 직렬화(Serialization) 및 역직렬화(Deserialization)를 쉽게 수행할 수 있도록 도와준다.

 

ObjectMapper : JSON과 Java 객체 간의 변환을 수행하는 클래스. writeValueAsString(), readValue()등의 메서드를 통해 JSON 데이터를 손쉽게 변환할 수 있다.

// Jackson 라이브러리에서 제공하는 클래스.
ObjectMapper obj = new ObjectMapper();
// 객체형태의 값을 String으로 직렬화 한다.
String json = obj.writeValueAsString(new User("이름", 20)); // User 클래스에는 Getter가 필요하다.

System.out.println(json);


▶ {"name" : "이름", "age" : 20}

=================================================================================

// JSON 형태의 데이터를 객체형태로 역직렬화 한다. 실제 User 클래스의 변수 이름과 같아야 한다.
String json = "{\"name\":\"이름\",\"age\":20}" // JSON 타입의 String

ObjectMapper obj = new ObjectMapper();
// json 타입, 어떤 객체로 만들 것인지 클래스 타입 지정
User user = obj.readValue(json, User.class);

System.out.println(user.getName());
System.out.println(user.getAge());


▶ 이름
▶ 20

 

Stream API : JSON 데이터를 한 번에 모두 읽는 것이 아닌, 스트림 방식으로 처리하여 메모리 사용량을 줄일 수 있다.

List<User> users = Arrays.asList(
            new User("이름1", 25),
            new User("이름2", 32),
            new User("이름3", 28),
            new User("이름4", 35)
        );

    // Stream API를 사용하여 나이가 30 이상인 사용자의 이름을 수집
    List<String> userNames = users.stream()
        .filter(user -> user.getAge() >= 30)   // 나이가 30 이상인 사용자 필터링
        .map(User::getName)                    // 사용자 객체에서 이름만 추출
        .collect(Collectors.toList());         // 결과를 리스트로 수집

    System.out.println(userNames);
}

▶ [이름2, 이름4]