Paradox Simulation

728x90
반응형

가끔은 @RequestBody 자체에 날라오는 Json값을 수동으로 받기 위해서, 또는 여러 JSON데이터를 받고 DTO에 직접 넣지않고 내가 제어하기 위해서 사용하고 싶을때가 있다.

 

Controller에서 위와 같은 상황을 제어 할 수 있는 방법이 있다.

 

Controller

@RequiredArgsConstructor
@RestController
public class ApiController{
	private final ApiService apiService;
    
    @PostMapping (value ="경로", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public Long save(@RequestBody(required = false) String node){
    	ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(objectNode);
        
        JsonNode jsonNoe = objectMapper.readTree(objectNode);
        JsonNode memberNode = jsonNode.get("memberRequest");
        JsonNode notListNode = jsonNode.get("notListNode");
        
        // 만약 List형일경우
        ArrayNode arrayMemberNode = (ArrayNode) memberNode;
        
        NotListDto notListDto = 
        	objectMapper.convertValue(notListNode, new TypeReference<NotListDto>(){});
            
        List<MemberDto> memberDtos = 
        	objectMapper.convertValue(memberNode, new TypeREference<List<MemberDto>>(){};
            
        return apiService.save(notListDto, memberDtos);
    
    }
}

우선 ObjectMapper를 이용해서 웹페이지에서 JSON데이터를 전송한 값을 받는다.

 

받은 값을 writeValueAsString메서드를 이용하여 String형으로 변환한다.

 

JsonNode 라는 객체를 이용해서 값을 읽어온다.


그중에서 웹페이지에서 data를 전송할때 Key값이 되는 부분을 읽는다.

(jsonNode.get("");)

 

List일경우 List형으로 한번 더 묶어서 service로 전달한다.

 

728x90
반응형

'DEV > JAVA 프로그래밍' 카테고리의 다른 글

Java - SimpleDateFormat, Calendar  (0) 2023.02.19
Java - StringBuffer  (0) 2023.02.15
Java - List 클래스  (0) 2023.02.05
Java - for each  (0) 2023.02.02
Java - Integer, string to int  (0) 2023.02.01
250x250
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band