[Spring] Object Mapper

99winnmin·2022년 7월 11일
0

Spring

목록 보기
1/17

Object Mapper란?

JSON 형식을 사용할 때, 응답들을 직렬화하고 요청들을 역직렬화 할 때 사용하는 기술이다.
object mapper는 spring 기능이 아닌 java 자체의 기능임

직렬화 (Serialize)

데이터를 전송하거나 저장할 때 바이트 문자열이어야 하기 때문에 객체들을 문자열로 바꾸어 주는 것

  • Object -> String 문자열
		// 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());

역직렬화(Deserialize)

데이터가 모두 전송된 이후, 수신측에서 다시 문자열을 기존의 객체로 회복시켜주는 것

  • String 문자열 -> Object
스프링 부트의 경우, spring-boot-starter-web에 기본적으로 Jackson 라이브러리가 있어서
Object <->JSON 간 변환은 자동으로 처리된다. (Jackson 라이브러리란 자바에서 고수준의 JSON 처리기이다.)
@RestController 의 경우, 요청과 응답이 내부적으로 직렬화/역직렬화가 되는데
이는 Jackson 라이브러리가 있기 때문이다. 

출처 : 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.

profile
功在不舍

0개의 댓글