반응형
1. 의존성 추가
- 다음의 의존성을 pom.xml에 추가해 준다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
2. ObjectMapper를 사용한 읽기 및 쓰기
- 기본적인 읽기 및 쓰기 작업을 한다.
ObjectMapper의 간단한 readValue API 는 좋은 진입점입니다.
JSON 콘텐츠를 Java 객체로 구문 분석하거나 역직렬화하는 데 사용할 수 있습니다.
또한 쓰기 측면에서writeValue API를 사용하여 모든 Java 객체를 JSON 출력으로 직렬화할 수 있습니다.
3.1. writeValue - 자바 객체를 JSON으로 반환
- 직렬화 또는 역직렬화할 개체로 두 개의 필드가 있는 다음 Car 클래스를 사용합니다.
public class Car {
private String color;
private String type;
// standard getters setters
}
- ObjectMapper 클래스 의 writeValue 메서드를 사용하여 Java 객체를 JSON으로 직렬화한다.
ObjectMapper objectMapper = new ObjectMapper();
Car car = new Car("yellow", "renault");
objectMapper.writeValue(new File("target/car.json"), car);
파일에서 위의 출력은 다음과 같습니다.
{"color":"yellow","type":"renault"}
ObjectMapper 클래스 의 writeValueAsString 및 writeValueAsBytes 메소드 는 Java 객체에서 JSON을 생성하고 생성된 JSON을 문자열 또는 바이트 배열로 반환합니다.
String carAsString = objectMapper.writeValueAsString(car);
3.2. JSON을 자바 객체로
다음은 ObjectMapper 클래스를 사용하여 JSON 문자열을 Java 객체로 변환한다.
String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }";
Car car = objectMapper.readValue(json, Car.class);
readValue() 함수는 또한 JSON 문자열을 포함하는 파일로서 다른 형태의 입력을 받아들인다.
Car car = objectMapper.readValue(new File("src/test/resources/json_car.json"), Car.class);
또는 URL로서 다른 형태의 입력을 받아들인다.
Car car =
objectMapper.readValue(new URL("file:src/test/resources/json_car.json"), Car.class);
참고 예시
//1. 객체생성
ObjectMapper om = new ObjectMapper();
//2. 지정한 경로에 result(Object type) 결과값을 json파일로 생성
File TestFile = new File(dir, String.format("calendar_%d_%d.json", fromIndex, toIndex));
om.writeValue(TestFile, result);
//3. 위에서 저장한 json파일을 자바 객체로 변환
for(File json : dir.listFiles()){
if(json.isDirectory())
continue;
log.info("Batch : 8-1. read json from file {}", json.getName());
List<Test> result = Arrays.asList(om.readValue(json, Test[].class));
}
https://search.maven.org/search?q=g:com.fasterxml.jackson.core%20AND%20a:jackson-databind
반응형
'Java' 카테고리의 다른 글
[알고리즘/Java] String(문자열) - 문자찾기 (0) | 2022.07.15 |
---|---|
[Java] Map 전체 출력(entrySet, keySet, Iterator) (0) | 2022.07.15 |
[Java] List<E> subList(int fromIndex, int toIndex); (0) | 2022.07.15 |
[Java] File Class - 특정 디렉토리 파일 목록 가져오기 (list/listFiles) (0) | 2022.07.15 |
[Java] File Class를 이용한 파일 생성 (0) | 2022.07.15 |