오답노트
[SpringBoot] Json String to 객체에서 ResponseBody 까지 본문
Json String -> 객체
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
import java.util.Arrays;
// 리스트로 받는 법
// resultList은 List<JSONObject> 이다
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
List<HarmornyRoomDto> harmornyRoomDtos = Arrays.asList(mapper.readValue(resultList.toString(), HarmornyRoomDto[].class));
harmornyRoomListDto.setHarmornyroomList(harmornyRoomDtos);
// 객체로 받는 법
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
HarmornyRoomDto harmornyRoomDto = mapper.readValue(resultList.toString(), HarmornyRoomDto.class);
Json Unrecognized field 해결
요즘 세상이 너무 좋아져서 방대한 양의 Json 데이터도 금방 class로 만들 수 있었다.
다만, 이걸 다시 내가 ResponseBody에 담기 위해서는 class에 데이터를 입력해야만 했다.
그래서 위에 ObjectMapper를 사용했는데 Unrecognized field 에러가 발생하더라.
에러를 보고 수동으로 다 맞춰줘야하는건가 싶어서 일단 Json의 모든 데이터를 멤버 변수로 만들어봐도 같은에러가 발생했는데, 구글링해보니 어노테이션으로 옵션을 넣어주면 금방 해결되더라. (Mapper 에서 configure에도 옵션을 넣어줘야한다.)
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class HarmornyRoomDto {
...
}
ResponseBody
Json으로 응답을 주고 싶으면 ResponseBody에 응답을 주고 싶은 class를 묶어서(?) 반환해주면 된다.
다만 Controller 클래스가 @RestController를 사용하거나 @ResponseBody가 있어야한다. 해당 컨트롤러가 View를 호출하지 않는다면 @RestController만으로 충분하다.
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
@RestController
public class NaverSearchController {
@Autowired
private NaverSearchService naverSearchService;
@GetMapping("/search")
public ResponseEntity<HarmornyRoomListDto> getSearchHarmonyRoom() { //@RequestParam String param
HarmornyRoomListDto harmornyRoomListDto = naverSearchService.getHarmornyRoom();
return new ResponseEntity<>(harmornyRoomListDto,HttpStatus.OK);
}
}
'Java' 카테고리의 다른 글
[JSP] JSP 에서 한글 깨짐 (0) | 2024.05.06 |
---|---|
[Spring JPA] Spring Data JPA (0) | 2023.07.18 |
[Java] Multi Thread Synchronization (0) | 2023.07.11 |
[Java] Thread (0) | 2023.07.11 |
[Java] 직렬화 (0) | 2023.07.11 |