ObjectMapper란?
ObjectMapper는 Jackson 라이브러리에서 제공하는 클래스로 JSON 형식의 데이터를 Java 객체로 변환하거나, Java 객체를 JSON 형식으로 변환할 수 있는 기능을 제공합니다. 이 라이브러리를 사용하면 JSON 처리가 매우 간편하며 직관적이기 때문에 애플리케이션 개발 시 유용합니다.
JSON 문자열을 Java 객체로 변환하기 - readValue 메서드
readValue 메서드는 JSON 문자열을 Java 객체로 변환하는 데 사용됩니다. 이 과정을 역직렬화라고도 하며, JSON 데이터에서 Java 객체로 데이터를 불러오고자 할 때 주로 사용됩니다.
JSON 문자열을 Java 객체로 변환하기
먼저, Java에서 JSON 문자열을 역직렬화하여 Person 객체로 변환하는 예제를 살펴보겠습니다. 이를 위해 Person 클래스를 정의해 보겠습니다.
import com.fasterxml.jackson.databind.ObjectMapper;
class Person {
private String name;
private int age;
private String city;
// 기본 생성자와 Getter, Setter 추가
public Person() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
public class Main {
public static void main(String[] args) {
String jsonString = "{\"name\":\"홍길동\", \"age\":30, \"city\":\"서울\"}";
ObjectMapper objectMapper = new ObjectMapper();
try {
Person person = objectMapper.readValue(jsonString, Person.class);
System.out.println("이름: " + person.getName());
System.out.println("나이: " + person.getAge());
System.out.println("도시: " + person.getCity());
} catch (Exception e) {
e.printStackTrace();
}
}
}
이 예제에서는 JSON 문자열 jsonString을 Person 객체로 변환하여 name, age, city 속성에 접근하는 과정을 보여줍니다. ObjectMapper의 readValue 메서드를 통해 JSON 데이터를 Java 객체로 손쉽게 역직렬화할 수 있습니다.
Java 객체를 JSON 문자열로 변환하기 - writeValueAsString 메서드
writeValueAsString 메서드는 Java 객체를 JSON 문자열로 변환할 때 사용됩니다. 이 과정은 직렬화라고 하며, Java 객체의 데이터를 JSON 형식으로 저장할 때 사용됩니다.
예제 코드: Java 객체를 JSON 문자열로 변환하기
Java 객체를 JSON 문자열로 직렬화하는 예제를 보겠습니다.
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
Person person = new Person();
person.setName("홍길동");
person.setAge(30);
person.setCity("서울");
ObjectMapper objectMapper = new ObjectMapper();
try {
String jsonString = objectMapper.writeValueAsString(person);
System.out.println("JSON 문자열: " + jsonString);
} catch (Exception e) {
e.printStackTrace();
}
}
}
이 예제에서는 Person 객체의 데이터를 JSON 형식의 문자열로 변환하여 출력합니다. writeValueAsString 메서드를 사용해 손쉽게 Java 객체를 JSON 문자열로 직렬화할 수 있습니다.
JSON 파일 입출력 다루기
ObjectMapper는 JSON 파일을 읽거나 쓰는 기능도 제공합니다. JSON 파일을 Java 객체로 변환하거나, 반대로 Java 객체를 JSON 파일로 저장할 수 있습니다.
JSON 파일을 Java 객체로 변환하기
아래 예제에서는 JSON 파일에서 데이터를 읽어와 Java 객체로 변환합니다.
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
public class Main {
public static void main(String[] args) {
ObjectMapper objectMapper = new ObjectMapper();
try {
Person person = objectMapper.readValue(new File("person.json"), Person.class);
System.out.println("이름: " + person.getName());
System.out.println("나이: " + person.getAge());
System.out.println("도시: " + person.getCity());
} catch (Exception e) {
e.printStackTrace();
}
}
}
위 코드는 person.json 파일을 읽어와 Person 객체로 변환합니다. 파일 입출력을 통해 JSON 데이터를 처리할 수 있습니다.
Java 객체를 JSON 파일로 저장하기
아래 코드는 Java 객체를 JSON 파일로 저장하는 예제입니다.
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
public class Main {
public static void main(String[] args) {
Person person = new Person();
person.setName("홍길동");
person.setAge(30);
person.setCity("서울");
ObjectMapper objectMapper = new ObjectMapper();
try {
objectMapper.writeValue(new File("person.json"), person);
System.out.println("person.json 파일로 저장되었습니다.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
이 코드는 Person 객체를 JSON 형식으로 person.json 파일에 저장합니다. 이를 통해 JSON 파일로 데이터를 쉽게 직렬화할 수 있습니다.
기본적인 직렬화와 역직렬화 예제
JSON 문자열을 Java 객체로 역직렬화하거나, Java 객체를 JSON 문자열로 직렬화할 때 ObjectMapper는 다양한 데이터 형식을 지원합니다.
List 형태의 JSON을 Java 리스트로 변환하기
다음 예제에서는 JSON 배열을 Java 리스트로 변환하는 예제를 살펴보겠습니다.
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class Main {
public static void main(String[] args) {
String jsonString = "[{\"name\":\"홍길동\", \"age\":30, \"city\":\"서울\"}, {\"name\":\"이순신\", \"age\":45, \"city\":\"부산\"}]";
ObjectMapper objectMapper = new ObjectMapper();
try {
List<Person> people = objectMapper.readValue(jsonString, new TypeReference<List<Person>>() {});
for (Person person : people) {
System.out.println("이름: " + person.getName() + ", 나이: " + person.getAge() + ", 도시: " + person.getCity());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
이 예제에서는 JSON 배열을 Java 리스트로 변환하여 여러 Person 객체를 처리합니다. TypeReference를 사용하여 제네릭 타입의 리스트로 역직렬화합니다.
참고 사이트
- Jackson GitHub: https://github.com/FasterXML/jackson
'JAVA' 카테고리의 다른 글
[JAVA] Jackson Tree Model API 활용하기 (1) | 2024.11.12 |
---|---|
[JAVA] Jackson 컬렉션 및 배열 데이터 처리 (1) | 2024.11.12 |
[JAVA] Jackson 고급 직렬화와 역직렬화 설정 (0) | 2024.11.11 |
[JAVA] Jackson 어노테이션 활용법 (0) | 2024.11.10 |
[JAVA] Jackson 환경 설정 (1) | 2024.11.08 |
[JAVA] Jackson 이란? (0) | 2024.11.07 |
[JAVA] Map과 JSON 데이터 변환 (0) | 2024.11.06 |
[JAVA] Map을 사용한 데이터 변환과 필터링 (0) | 2024.11.06 |