[Java/Spring] Spring-ObjectMapper

Hyeri Park·2022년 7월 14일
0

JAVA/Spring 기초

목록 보기
9/22
post-thumbnail
post-custom-banner

1. ObjectMapper

ObjectMapper 란?

  • text 형태의 JSON을 object로 변경해 주거나, object를 text 형태의 JSON으로 변경해 주는 것을 의미
  • 예) controller에 요청이 오면, JSON타입인 것을 object로 변경을 해주고, 처리 후 응답으로 클라이언트에 자동으로 Object를 요청 후 json으로 변경
Text JSON -> Object
Object -> Text JSON

폴더/파일위치

ObjectMapperApplicationTest.java

package com.example.objectmapper;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

@SpringBootTest
class ObjectMapperApplicationTests {


	@Test
	void contextLoads() throws JsonProcessingException{
		System.out.println("---------test--------");
		
		// Text JSON -> Object
		// Object -> Text JSON
		
		// controller req json (text) - object
		// response object -> json(text)
		
		var objectMapper = new ObjectMapper();
		
		
		// 1. object -> text
		// object mapper가 get method를 활용한다.
		var user = new User("hyeri", 30, "010-1111-2222");
		var text = objectMapper.writeValueAsString(user);
		System.out.println(text);
		
		
		//2. text -> object
		// object mapper는 defalut 생성자를 필요로 한다. 
		// 생성자 오버로딩을 했기 때문에, 디폴트 생성자가 없어도 됬었으나 object를 만들기 위해 디폴트 생성자를 꼭 추가해야한다. 
		var objectUser = objectMapper.readValue(text,User.class);
		System.out.println(objectUser);
	}

}



User.java

package com.example.objectmapper;

import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
	
	private String name;
	private int age;
	
	@JsonProperty("phone_number")
	private String phoneNumber;
	
	// 기본생성자 
	public User(String name, int age, String phonenumber) {
		this.name = name;
		this.age = age;
		this.phoneNumber = phonenumber;
	}
	
	//디폴드생성자 추가 
	public User() {
		this.name = null;
		this.age = 0;
		this.phoneNumber = null;
	}
	
	// getter 추가 
	public String getName() {
		return name;
	}


	public String getPhoneNumber() {
		return phoneNumber;
	}

	public int getAge() {
		return age;
	}

	
	public User defaultUser() {
		return new User("default", 30, "010-111-2222");
	}
	
	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + ", phoneNumber=" + phoneNumber + "]";
	}




}

profile
Backend Developer
post-custom-banner

0개의 댓글