[Spring Boot] Object Mapper

pjh5365·2023년 2월 20일
0

Object Mapper란?

텍스트형태의 Json파일을 Object로, Object를 텍스트형태의 Json으로 바꿔주는 역할을 한다.


Object에서 Json으로 바꿀 때

예외가 발생할 수 있기 때문에 예외처리를 해줘야 하며 objectMapper가 get메소드를 활용하여 작동하기 때문에 반드시 get메소드가 필요하다.
하지만 다른 메소드에서 get문자를 붙이면 에러가 발생하기 때문에 다른 메소드에는 붙이지 않도록 주의해서 사용해야 한다.


Json에서 Object

디폴트 생성자가 있어야 정상작동을 하므로 생성자를 오버라이딩한 경우 디폴트 생성자를 추가해주어야 한다.


활용 예시

package com.example.objectmappingtest;

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 ObjectMappingTestApplicationTests {

    @Test
    void contextLoads() throws JsonProcessingException {
        System.out.println("---------------------");

        ObjectMapper objectMapper = new ObjectMapper();

        //Object -> text(Json)
        User user = new User("이름", 10);

        //변환시 예외를 발생시킬 수 있기때문에 예외처리 필요함
        //objectMapper는 get메소드를 활용하기 때문에 User클래스에 get메소드가 필요함
        //주의)클래스가 objectMapper에서 활용된다면 에러가 발생하기 때문에 다른 메소드명에 get문자를 넣지 않아야 정상적으로 작동한다.
        var text = objectMapper.writeValueAsString(user);
        System.out.println(text);

        //text(Json) -> Object
        //objectMapper는 디폴트생성자가 있어야 작동할 수 있다
        var objectUser = objectMapper.readValue(text, User.class);
        System.out.println(objectUser);

        System.out.println("---------------------");
    }

}

User클래스

package com.example.objectmappingtest;

public class User {

    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    //에러를 발생시키는 메소드
    public String getNameAge() {
        return name + " " + age;
    }

    //에러를 발생시키지 않도록 get을 제외하고 메소드명을 작성해야함
    public String nameAge() {
        return name + " " + age;
    }

    public  User() {}

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

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}

0개의 댓글