Java / / 2022. 7. 15. 11:03

[Spring] Jackson ObjectMapper

반응형

 

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 

 

Maven Central Repository Search

 

search.maven.org

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유