반응형
ObjectMapper 클래스는 Jackson 라이브러리에서 제공하는 클래스로, Java 객체를 JSON 문자열로 직렬화하거나 JSON 문자열을 Java 객체로 역직렬화하는 데 사용됩니다. 아래에서 writeValueAsString 및 readValue 메서드에 대한 간단한 설명과 사용법을 말씀드리겠습니다.
writeValueAsString 메서드
- Java 객체를 JSON 문자열로 변환하는 데 사용됩니다.
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(object);
- objectMapper: ObjectMapper 인스턴스를 생성합니다.
- object: JSON으로 직렬화할 Java 객체입니다.
- jsonString: Java 객체를 표현하는 JSON 문자열입니다.
readValue 메서드
- JSON 문자열을 Java 객체로 역직렬화하는 데 사용됩니다.
ObjectMapper objectMapper = new ObjectMapper();
T object = objectMapper.readValue(jsonString, T.class);
- objectMapper: ObjectMapper 인스턴스를 생성합니다.
- jsonString: 역직렬화할 JSON 문자열입니다.
- T: 역직렬화될 Java 객체의 클래스입니다.
예제코드
아래 소스코드는 Java 객체, Map, List, 배열에 대해서 JSON으로 변환 및 역직렬화를 하는 코드입니다. ObjectMapper를 통해서 데이터 유형을 간편하게 변환하고 Java와 JSON 간의 데이터 교환을 단순하게 해주는 유용하게 사용하는 클래스입니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TEST {
public static void main(String[] args) {
// 예제로 사용할 데이터
Person person1 = new Person("John", 30);
Person person2 = new Person("Jane", 25);
Map<String, Object> dataMap1 = new HashMap<>();
dataMap1.put("name", "John");
dataMap1.put("age", 30);
dataMap1.put("occupation", "Engineer");
dataMap1.put("email", "john@example.com");
Map<String, Object> dataMap2 = new HashMap<>();
dataMap2.put("name", "Jane");
dataMap2.put("age", 25);
dataMap2.put("occupation", "Doctor");
dataMap2.put("email", "jane@example.com");
List<String> namesList = new ArrayList<>();
namesList.add("John");
namesList.add("Jane");
namesList.add("Bob");
String[] colorsArray = {"Red", "Green", "Blue"};
// ObjectMapper 생성
ObjectMapper objectMapper = new ObjectMapper();
try {
// Java 객체를 JSON 문자열로 변환
String personJson1 = objectMapper.writeValueAsString(person1);
String personJson2 = objectMapper.writeValueAsString(person2);
System.out.println("Person JSON 문자열 1: " + personJson1);
System.out.println("Person JSON 문자열 2: " + personJson2);
// Map을 JSON 문자열로 변환
String mapJson1 = objectMapper.writeValueAsString(dataMap1);
System.out.println("Map JSON 문자열 1: " + mapJson1);
// JSON 문자열을 원래 타입으로 다시 변환
Map<String, Object> reconstructedMap1 = objectMapper.readValue(mapJson1, Map.class);
System.out.println("Map 1: " + reconstructedMap1);
String mapJson2 = objectMapper.writeValueAsString(dataMap2);
System.out.println("Map JSON 문자열 2: " + mapJson2);
Map<String, Object> reconstructedMap2 = objectMapper.readValue(mapJson2, Map.class);
System.out.println("Map 2: " + reconstructedMap2);
// List를 JSON 문자열로 변환
String listJson = objectMapper.writeValueAsString(namesList);
System.out.println("List JSON 문자열: " + listJson);
// JSON 문자열을 원래 타입으로 다시 변환
List<String> reconstructedList = objectMapper.readValue(listJson, List.class);
System.out.println("List: " + reconstructedList);
// 배열을 JSON 문자열로 변환
String arrayJson = objectMapper.writeValueAsString(colorsArray);
System.out.println("Array JSON 문자열: " + arrayJson);
// JSON 문자열을 원래 타입으로 다시 변환
String[] reconstructedArray = objectMapper.readValue(arrayJson, String[].class);
System.out.println("Array: " + Arrays.toString(reconstructedArray));
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
반응형
'개발이야기 > Java' 카테고리의 다른 글
[Java] while 반복문 사용법, 예제 (break, continue) (0) | 2023.12.02 |
---|---|
[Java] Pattern, Matcher 클래스 활용해서 정규 표현식 사용하기, 예제 (이메일, 전화번호, URL) (0) | 2023.12.01 |
[Java] Map에 키(key), 값(value)이 존재하는지 확인하기(containsKey, containsValue) (0) | 2023.11.20 |
[Java] 문자열에서 HTML 태그 제거하기 (정규식 사용) (1) | 2023.11.20 |
[Java] 금액, 숫자를 한글로 변환하기 (0) | 2023.11.20 |
댓글