JSON(JavaScript Object Notation)은 데이터 교환을 위한 경량의 데이터 형식으로, 많은 웹 애플리케이션에서 사용되고 있습니다. Java에서는 JSON을 처리하고 다루기 위해 여러 라이브러리를 사용할 수 있지만, 그 중에서 Jackson 라이브러리를 사용하는 방법에 대해 알아보겠습니다.
Jackson 라이브러리란?
Jackson은 JSON 데이터를 Java 객체로 변환하거나, Java 객체를 JSON 데이터로 변환하는 기능을 제공하는 라이브러리입니다. 이 라이브러리를 사용하면 JSON 데이터와 Java 객체 간의 변환, 데이터 바인딩, 그리고 데이터 조작을 쉽게 할 수 있습니다.
Maven 의존성 추가
Jackson 라이브러리를 프로젝트에 추가하려면 Maven 프로젝트의 pom.xml
파일에 다음 의존성을 추가합니다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>
Jackson을 사용한 고급 JSON 처리 방법
커스텀 직렬화와 역직렬화
Jackson은 기본적으로 Java 객체의 필드를 JSON 속성에 매핑할 수 있지만, 때로는 이 매핑을 커스터마이징해야 할 때가 있습니다. 이를 위해 직렬화(serialization)와 역직렬화(deserialization)를 커스터마이징할 수 있습니다.
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@JsonSerialize(using = CustomSerializer.class)
@JsonDeserialize(using = CustomDeserializer.class)
public class CustomObject {
private String customField;
// 생략
}
위의 코드에서 @JsonSerialize
와 @JsonDeserialize
어노테이션을 사용하여 직렬화와 역직렬화를 커스터마이즈할 수 있습니다. CustomSerializer
및 CustomDeserializer
는 사용자가 작성한 클래스일 것입니다.
JSON 노드 다루기
Jackson은 JSON 데이터를 나타내는 JsonNode
클래스를 제공합니다. 이를 사용하여 JSON 데이터를 다룰 수 있습니다.
String json = "{ \"name\" : \"John\", \"age\" : 30 }";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(json);
String name = jsonNode.get("name").asText();
int age = jsonNode.get("age").asInt();
위의 코드에서는 JSON 데이터의 속성을 JsonNode
의 get
메서드를 통해 읽어올 수 있습니다.
결론
Jackson 라이브러리를 사용하면 복잡한 JSON 데이터를 쉽게 다룰 수 있습니다. 커스텀 직렬화와 역직렬화, 그리고 JsonNode
를 사용하여 JSON 데이터를 처리하는 방법을 통해 더욱 뛰어난 기능들을 활용할 수 있습니다.
더 자세한 내용은 Jackson 라이브러리의 공식 문서를 참고할 수 있습니다.