728x90
반응형
ObjectMapper를 알아보자..
restAPI를 이용할 때, 클라이언트가 보낸 JSON데이터는 자동으로 DTO로 변환되고,
서버에서 클라이언트로 데이터를 보낼때에도 DTO에서 JSON으로 자동으로 변환되었다.
어떻게 변환되는 것인지.. 그 동작을 살펴보자
@Test
public void 자바_객체를_JSON으로_변환() throws JsonProcessingException {
//준비
List<String> ingredients = Arrays.asList("shrimp","beef","bread","tomato");
Burger burger = new Burger("burger",5500,ingredients);
ObjectMapper objectMapper = new ObjectMapper();
//수행. objectMapper.writeValueAsString메소드를 통해 객체를 JSON으로 변환
String json = objectMapper.writeValueAsString(burger);
//예상
String expected = "{\"name\":\"burger\",\"price\":5500,\"ingredients\":[\"shrimp\",\"beef\",\"bread\",\"tomato\"]}";
//검증
assertEquals(expected,json);
JsonNode jsonNode = objectMapper.readTree(json);
System.out.print(jsonNode.toPrettyString());
}
자바 객체를 JSON으로 변환하는 예시이다.
ObjectMapper.writeValueAsString()을 이용하면, 자바 객체를 JSON으로 쉽게 변환할 수 있다.
@Test
public void JSON을_자바_객체로_변환() throws JsonProcessingException {
//준비
ObjectMapper objectMapper = new ObjectMapper();
String json = "{\"name\":\"burger\",\"price\":5500,\"ingredients\":[\"shrimp\",\"beef\",\"bread\",\"tomato\"]}";
//수행
Burger burger = objectMapper.readValue(json,Burger.class);
//예상
List<String> ingredients = Arrays.asList("shrimp","beef","bread","tomato");
Burger expected = new Burger("burger",5500,ingredients);
//검증
assertEquals(expected.toString(),burger.toString());
}
반대로, JSON을 자바 객체로 변환하는 경우는
ObjectMapper.readValue를 이용하면 된다.
이 때 메소드의 첫번째 인자는 json을, 두번째 인자는 변환할 타입을 입력하면 된다.
//String json = "{\"name\":\"burger\",\"price\":5500,\"ingredients\":[\"shrimp\",\"beef\",\"bread\",\"tomato\"]}";
/*
* {
* "name":"burger"
* }
*
* */
ObjectNode objectNode = objectMapper.createObjectNode();
objectNode.put("name","burger");
objectNode.put("price",5500);
ArrayNode arrayNode = objectMapper.createArrayNode();
arrayNode.add("shrimp");
arrayNode.add("beef");
arrayNode.add("bread");
arrayNode.add("tomato");
objectNode.set("ingredients",arrayNode);
String json = objectNode.toString();
(추가)
JSON데이터를 만드는 방법은
ObjectNode.put을 이용하여 키와 밸류를 입력하고
ObjectNode.toString()을 이용하여 String형으로 변환하면 된다.
728x90
반응형
'웹개발 > SpringBoot' 카테고리의 다른 글
의존성 주입(DI), 스프링 빈과 의존관계 (0) | 2023.03.19 |
---|---|
빌드하고 실행하기 (0) | 2023.03.18 |
AOP(Aspect Oriented Programming) (1) | 2023.03.14 |
댓글 수정, 삭제기능 추가하기 (API 호출, fetch) (1) | 2023.03.14 |
자바스크립트 fetch로 REST API 호출하기 (댓글등록) (0) | 2023.03.13 |
댓글