spring boot #18

·2022년 5월 21일
0

spring

목록 보기
19/22

ObjectMapper

ObjectMapper는 JSON과 자바객체(DTO)간의 변환을 제공하는 객체이다.

ObjectMapper를 활용하여 JSON과 DTO간 변환하고 변환결과, 응답결과를 확인해보겠다.

💬 디버깅 AOP 적용

@Pointcut 수정

Pointcut을 수정하여, api 폴더에 있는 모든 컨트롤러의 메소드를 디버깅 AOP 대상으로 적용해준다.

//DebuggingAspect.java

    @Pointcut("execution(* com.example.firstproject.api.*.*(..))")
    private void cut(){}

💬 객체를 JSON으로..

writeValueAsString(), @Getter

//import 생략

@ToString
@AllArgsConstructor
@Getter
@NoArgsConstructor
public class Burger {
    private String name;
    private  int price;
    private List<String> ingredients;
}

writeValueAsString 메소드에 예외 처리를 해준다.

Add exception to method signature.

//import 생략

class BurgerTest {
    @Test
    public void 자바_객체를_JSON으로_변환() throws JsonProcessingException {
        //준비
        ObjectMapper objectMapper = new ObjectMapper();
        List<String> ingredients = Arrays.asList("고기 패티", "토마토", "소스");
        Burger burger = new Burger("버거킹 와퍼",5000,ingredients);

        //수행
        String json = objectMapper.writeValueAsString(burger);

        //예상
        String expected ="{\"name\":\"버거킹 와퍼\",\"price\":5000,\"ingredients\":[\"고기 패티\",\"토마토\",\"소스\"]}";

        //검증
        assertEquals(expected, json);
        System.out.println(json);
    }
}

💬 JsonNode 활용

JsonNode란 Jackson 라이브러리에서 제공하는 객체이다.

readTree(), JsonNode, toPrettyString()

objectMapper를 사용한 JSON 생성.

		//검증
        
		assertEquals(expected, json);
        JsonNode jsonNode = objectMapper.readTree(json);
        System.out.println(jsonNode.toPrettyString());

💬 JSON을 객체로..

readValue(), @NoArgsConstructor

readValue(JSON, JSON으로 만들 클래스 타입)

		//검증
        
        assertEquals(expected.toString(), burger.toString());
        JsonNode jsonNode = objectMapper.readTree(json);
        System.out.println(jsonNode.toPrettyString());
        System.out.println(burger.toString());

💬 JSON 직접 만들기

createObjectNode(), ObjectNode, ArrayNode

 @Test
    public void JSON을_자바_객체로_변환() throws JsonProcessingException {
        // 준비
        ObjectMapper objectMapper = new ObjectMapper();
        /*
        {
          "name" : "버거킹 와퍼",
          "price" : 5000,
          "ingredients" : [ "고기 패티", "양사추", "토마토", "소스" ]
        }
        */
        ObjectNode objectNode = objectMapper.createObjectNode();
        objectNode.put("name", "버거킹 와퍼");
        objectNode.put("price", 5000);
        ArrayNode arrayNode = objectMapper.createArrayNode();
        arrayNode.add("고기 패티");
        arrayNode.add("양상추");
        arrayNode.add("토마토");
        arrayNode.add("소스");
        objectNode.set("ingredients", arrayNode);
        String json = objectNode.toString();

        // 수행
        Burger burger = objectMapper.readValue(json, Burger.class);

        // 예상
        List<String> ingredients = Arrays.asList("고기 패티", "양상추", "토마토", "소스");
        Burger expected = new Burger("버거킹 와퍼", 5000, ingredients);

        // 검증
        assertEquals(expected.toString(), burger.toString());
        JsonNode jsonNode = objectMapper.readTree(json);
        System.out.println(jsonNode.toPrettyString());
        System.out.println(burger.toString());
    }

0개의 댓글

관련 채용 정보