본문 바로가기
Java

java - ObjectMapper

by sinabeuro 2021. 8. 29.
728x90

ObjectMapper

Request한 데이터를 객체 형태나 텍스트 형태로 변경하는 메소드를 소개하려고 합니다.

ObjectMapper를 이용해서 JSON 데이터를 Object로 변환할 수 있으며, 반대로 Object를 JSON으로 변환할 수 있습니다.

@RestController
@RequestMapping("/api/objectMapper")
public class ObjectMapperController {

    @PostMapping("")
    public void objectMapper(@RequestBody String name) throws JsonProcessingException {

    	// Text JSON -> Object
    	// Object -> Text JSON
    	ObjectMapper objectMapper = new ObjectMapper();

    	// object -> text
    	// object mapper get method를 활용한다.
    	User user = new User("steve", 10, "010-0000-0000");
    	String text = objectMapper.writeValueAsString(user);
    	System.out.println(text);

    	// text -> object
    	// object mapper는 default 생성자가 필요하다.
    	User objectUser = objectMapper.readValue(text, User.class);
    	System.out.println(objectUser);
    	System.out.println(objectUser.getAge());
    }
	...
}

 

writeValueAsString 메소드

 

ObjectMapper의 writeValueAsString 메소드는 객체를 text로 변환할 때 사용하는 메소드입니다.

request 파라미터로 객체를 받거나 생성된 객체를 text(string)으로 변경할 경우 유용하게 사용할 수 있는 메소드입니다.

 

 

readValue 메소드

 

ObjectMapper의 readValue 메소드는 텍스트를 객체로 변환할 때 사용하는 메소드입니다.

객체를 만들 수 있는 리터럴(literal) 형식의 텍스트와 만들고 싶은 객체의 DTO를 readValue 메소드의 인자로 받으면 객체의 형태로 만들 수 있습니다.

여기서 주의할 점은 만들고 싶은 객체의 DTO에 반드시 디폴트 생성자가 필요합니다. 

또한 readValue 메소드 사용 시 예외처리를 하셔야합니다.

 

DTO 클래스 예시

// User.java
public class User {

    private String name;
    private int age;
    private String phoneNumber;

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

    public User() {
        this.name = "drfualt";
        this.age = 0;
        this.phoneNumber = "010";
    }
    public User defaultUser() {
        return new User("default", 0, "010");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

 

다음 포스팅에서는 ObjectMapper에서 사용하는 JsonNode, ObjectNode, ArrayNode에 대해서 살펴보겠습니다.

https://getthismoment.tistory.com/82

 

 

 

728x90

'Java' 카테고리의 다른 글

Java - ObjectMapper의 JsonNode, ObjectNode, ArrayNode  (0) 2021.09.07
java - RequestHeader  (0) 2021.08.31
java - PUT API  (0) 2021.08.26
java - POST API  (0) 2021.08.26
java - GET API  (0) 2021.08.26

댓글