23.06.24 TIL

정길규·2023년 6월 25일

학습내용

import lombok.Getter;

@Getter
public class Star {
    String name;
    int age;

    public Star(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Star() {}
}
	@Test
    @DisplayName("Object To JSON : get Method 필요")
    void test1() throws JsonProcessingException {
        Star star = new Star("Robbie", 95);

        ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper
        String json = objectMapper.writeValueAsString(star);

        System.out.println("json = " + json);
    }

위의 코드를 해석을 할려고 한다.

@DisplayName

Object -> JSON 형태로 변환

  • Star 클래스의 객체를 인스턴스화 한다. - Object
  • ObjectMapper를 사용하기 위해 객체를 생성한다.
  • ObjectMapper의 writeValueAsString() 메서드를 사용해서 매개변수에 star를 넣어서 String 형태의 변수에 대입한다.
  • 즉 Object -> JSON으로 변환 할려면 writeValueAsString() 메서드를 사용한다.
  • 타입은 String 이지만 형태는 JSON으로 출력된다.
  • @Getter를 사용하기 때문에 오브젝트에 @Getter를 달아야한다.

JSON -> Object 형태로 변환

    @Test
    @DisplayName("JSON To Object : 기본 생성자 & (get OR set) Method 필요")
    void test2() throws JsonProcessingException {
        String json = "{\"name\":\"Robbie\",\"age\":95}"; // JSON 타입의 String

        ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper

        Star star = objectMapper.readValue(json, Star.class);
        System.out.println("star.getName() = " + star.getName());
        System.out.println("star.getName() = " + star.getAge());
    }
  • JSON 형태의 String -> Object
  • 마찬가지로 ObjectMapper 객체를 생성한다.
  • 그 후 ObjectMapper의 메서드인 readValue() 메서드를 사용한다.
  • readValue()의 매개변수로는 (JSON형태의 String, 어떤형태로바꿀 객체)
  • 위의 코드에서는 Star객체의 형태로 변환하여 객체를 생성한 후Star 타입의 변수에 저장하는 뜻이다.
  • JSON -> Object로 변환을 할려면 Object 객체에 기본 생성자가 있어야 한다.
  • 마찬가지로 @Getter or Setter를 달아야 한다.
  • 그리고 json의 필드 이름과 Object의 필드명이 동일해야 한다.

0개의 댓글