개발/Java

ObjectMapper

이쪽저쪽살짝 2023. 3. 31. 20:20
반응형

com.fasterxml.jackson.databind.ObjectMapper는 Jackson 라이브러리에서 제공하는 클래스 중 하나로, JSON 데이터를 Java 객체로 변환하거나 Java 객체를 JSON 데이터로 변환하는 기능을 제공합니다.

 

ObjectMapper의 주요 기능은 다음과 같습니다 :

 

1. JSON 데이터를 Java 객체로 변환하기

ObjectMapper는 readValue() 메소드를 제공하여 JSON 데이터를 Java 객체로 변환할 수 있습니다. 이 메소드는 다음과 같이 호출됩니다:

String json = "{\"name\":\"John\", \"age\":30}";
ObjectMapper objectMapper = new ObjectMapper();
Person person = objectMapper.readValue(json, Person.class);

위 코드에서 json은 JSON 형식의 문자열입니다. ObjectMapper 객체를 생성한 후, readValue() 메소드를 사용하여 json 문자열을 Person 객체로 변환합니다. Person 클래스는 다음과 같이 정의됩니다:

@Getter @Setter
public class Person {
    private String name;
    private int age;
    // 생성자
}

 

2. Java 객체를 JSON 데이터로 변환하기

ObjectMapper는 writeValueAsString() 메소드를 제공하여 Java 객체를 JSON 데이터로 변환할 수 있습니다. 이 메소드는 다음과 같이 호출됩니다:

Person person = new Person("John", 30);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(person);

위 코드에서 Person 객체를 생성한 후, ObjectMapper 객체를 생성하여 writeValueAsString() 메소드를 사용하여 Person 객체를 JSON 데이터로 변환합니다.

 

3. JSON 데이터를 Java 객체의 List로 변환하기

ObjectMapper는 readValue() 메소드를 사용하여 JSON 데이터를 Java 객체의 List로 변환할 수 있습니다. 이 메소드는 다음과 같이 호출됩니다:

String json = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Jane\", \"age\":25}]";
ObjectMapper objectMapper = new ObjectMapper();
List<Person> people = objectMapper.readValue(json, new TypeReference<List<Person>>(){});

위 코드에서 json은 JSON 형식의 배열입니다. ObjectMapper 객체를 생성한 후, readValue() 메소드를 사용하여 json 문자열을 List<Person> 객체로 변환합니다.

 

4. Java 객체의 List를 JSON 데이터로 변환하기

ObjectMapper는 writeValueAsString() 메소드를 사용하여 Java 객체의 List를 JSON 데이터로 변환할 수 있습니다. 이 메소드는 다음과 같이 호출됩니다:

List<Person> people = Arrays.asList(new Person("John", 30), new Person("Jane", 25));
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(people);

위 코드에서 List<Person> 객체를 생성한 후, ObjectMapper 객체를 생성하여 writeValueAsString() 메소드를 사용하여 List<Person> 객체를 JSON 데이터로 변환합니다.

 

5. Jackson Annotation 사용하기

ObjectMapper는 Jackson Annotation을 사용하여 JSON 데이터와 Java 객체를 매핑할 수 있습니다. 예를 들어, 다음과 같이 @JsonProperty 어노테이션을 사용하여 JSON 데이터의 프로퍼티 이름와 Java 객체의 프로퍼티 이름을 매핑할 수 있습니다:

@Getter @Setter
public class Person {
    @JsonProperty("full_name")
    private String name;
    private int age;
    // 생성자
}

위 코드에서 @JsonProperty("full_name")은 JSON 데이터의 full_name 프로퍼티를 Person 클래스의 name 프로퍼티와 매핑합니다.

 

6. Jackson Annotation을 사용하여 JSON 데이터의 일부 프로퍼티만 매핑하기

ObjectMapper는 Jackson Annotation을 사용하여 JSON 데이터의 일부 프로퍼티만 매핑할 수 있습니다. 예를 들어, 다음과 같이 @JsonIgnoreProperties 어노테이션을 사용하여 JSON 데이터에서 age 프로퍼티를 무시할 수 있습니다:

@Getter @Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {
    private String name;
    @JsonIgnore
    private int age;
    // 생성자
}

위 코드에서 @JsonIgnore는 Java 객체의 age 프로퍼티를 JSON 데이터에서 무시합니다.

 

7. Jackson Annotation을 사용하여 JSON 데이터의 날짜 형식 매핑하기

ObjectMapper는 Jackson Annotation을 사용하여 JSON 데이터의 날짜 형식을 매핑할 수 있습니다. 예를 들어, 다음과 같이 @JsonFormat 어노테이션을 사용하여 JSON 데이터에서 birthDate 프로퍼티의 날짜 형식을 매핑할 수 있습니다:

@Getter @Setter
public class Person {
    private String name;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthDate;
    // 생성자
}

위 코드에서 @JsonFormat(pattern = "yyyy-MM-dd")은 JSON 데이터에서 birthDate 프로퍼티의 날짜 형식을 yyyy-MM-dd로 매핑합니다.

 

8. 기타 기능

ObjectMapper는 기타 다양한 기능을 제공합니다. 예를 들어, ObjectMapper는 다양한 JSON 데이터 형식을 지원하며, JSON 데이터에 대한 유효성 검사 기능을 제공합니다. 또한, ObjectMapper는 JSON 데이터에서 프로퍼티를 빈 값으로 설정하는 대신, 프로퍼티를 무시하는 기능을 제공합니다.

위에서 설명한 기능 외에도, ObjectMapper는 JSON 데이터와 Java 객체를 매핑하는 다양한 기능을 제공합니다. 따라서, ObjectMapper는 Java 개발자가 JSON 데이터를 처리하는 데 매우 유용한 도구입니다.

반응형