JSON 형식을 사용할 때, 응답들을 직렬화하고 요청들을 역직렬화 할 때 사용하는 기술이다.
object mapper는 spring 기능이 아닌 java 자체의 기능임
데이터를 전송하거나 저장할 때 바이트 문자열이어야 하기 때문에 객체들을 문자열로 바꾸어 주는 것
// json 직렬화
String json = objectMapper.writeValueAsString(user);
System.out.println(json);
// json 직렬화 결과 출력
JsonNode jsonNode = objectMapper.readTree(json);
String _name = jsonNode.get("name").asText();
int _age = jsonNode.get("age").asInt();
System.out.println("name : "+_name);
System.out.println("age : "+_age);
// object는 문자열 받듯이 받으면 안됨
JsonNode cars = jsonNode.get("cars");
ArrayNode arrayNode = (ArrayNode)cars;
// object를 받아서 원하는 타입으로 변환시켜줌, json 역직렬화
List<Car> _cars = objectMapper.convertValue(arrayNode, new TypeReference<List<Car>>() {});
System.out.println(_cars);
// json value값 바꾸기
ObjectNode objectNode = (ObjectNode) jsonNode;
objectNode.put("name","steve");
objectNode.put("age",25);
// json 예쁘기 출력하기기
System.out.println(objectNode.toPrettyString());
데이터가 모두 전송된 이후, 수신측에서 다시 문자열을 기존의 객체로 회복시켜주는 것
스프링 부트의 경우, spring-boot-starter-web에 기본적으로 Jackson 라이브러리가 있어서
Object <->JSON 간 변환은 자동으로 처리된다. (Jackson 라이브러리란 자바에서 고수준의 JSON 처리기이다.)
@RestController 의 경우, 요청과 응답이 내부적으로 직렬화/역직렬화가 되는데
이는 Jackson 라이브러리가 있기 때문이다.
출처 : 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.