Object Mapper


Object Mapper



  • ObjectMapper는 text 형태의 JSON을 object(객체)로 바꿔주거나 JSON 형태의 obejct를 text로 바꿔줌

  • 이전 예제들을 보면 controller에서 request로 json(text) -> object로 바꿔주고, response를 object로 리턴하면 json(text)로 바꿔줬었다!



object를 text로 바꾸기


  • main > java > com.example > object_mapper > User.java

      package com.example.object_mapper;
    
      public class User {
          private String name;
          private int age;
    
          public User(){}
    
          public User(String name, int age){
              this.name = name;
              this.age = age;
          }
    
          public String getName() {
              return name;
          }
    
          public int getAge() {
              return age;
          }
    
              @Override
              public String
              toString() {
                  return "User{" +
                          "name='" + name + '\'' +
                          ", age=" + age +
                          '}';
              }
    
      }
    


  • test > java > com.example > object_mapper > ObjectMapperApplicationTests.java

      package com.example.object_mapper;
    
      import com.fasterxml.jackson.core.JsonProcessingException;
      import com.fasterxml.jackson.databind.ObjectMapper;
      import org.junit.jupiter.api.Test;
      import org.springframework.boot.test.context.SpringBootTest;
    
      @SpringBootTest
      class ObjectMapperApplicationTests {
    
          @Test
          void contextLoads() throws JsonProcessingException {
    
              var objectMapper = new ObjectMapper();
    
              var user = new User("김이름", 23);
              var text = objectMapper.writeValueAsString(user);
              System.out.println(text);
    
          }
    
      }
    
    
      // 출력 
      // {"name":"김이름","age":23}
    
    • var

      • java 10 부터 추가

      • 타입 추론 : 개발자가 변수의 타입을 명시적으로 적어주지 않아도 컴파일러가 알아서 변수의 타입을 대입된 리터럴로 추론

    • objectmapper는 ‘get method’ 참조!



text를 object로 바꾸기


  • test > java > com.example > object_mapper > ObjectMapperApplicationTests.java

      package com.example.object_mapper;
    
      import com.fasterxml.jackson.core.JsonProcessingException;
      import com.fasterxml.jackson.databind.ObjectMapper;
      import org.junit.jupiter.api.Test;
      import org.springframework.boot.test.context.SpringBootTest;
    
      @SpringBootTest
      class ObjectMapperApplicationTests {
    
          @Test
          void contextLoads() throws JsonProcessingException {
    
              var objectMapper = new ObjectMapper();
                
              var objectUser = objectMapper.readValue(text, User.class);
                                          // readValue(jsontext, 어떠한클래스타입으로바꿀건지)
              System.out.println(objectUser);
    
          }
    
      }
    
      // 출력
      // User{name='김이름', age=23}
    
    • 이 경우 ‘디폴트 생성자’가 있어야 에러가 나지 않는다

Categories:

Spring