Restful API를 사용하여 Request, Response를 보내고 받다보면, 각 API에서 사용하는 파라메터의 타입별로 변환해줘야하는데,,
회사에서 쓰는 Util을 분석하다보니, 결국 사용하는 변환 방식은 동일한 것임을 발견했다.
방법은 어렵지 않더라,
Request Parameter => Json Message
// Request Param Data
Map<String, Object> paramMap = new HashMap<>();
// JSON 파싱 (Java 용 JSON 라이브러리(Jackson)
ObjectMapper om = new ObjectMapper();
// 어떤 타입을 넣던지, 자동으로 변환.
// Map이 아니라 List, List<Map<>>, Map<String, List<String>> 도 마찬가지로 잘 처리한다.
om.writeValueAsBytes(paramMap)
// Http header 세팅
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// Http header & body 관련 정보 저장
HttpEntity<byte[]> request = new HttpEntity<byte[]>(om.writeValueAsBytes(paramMap), headers);
위 소스처럼, ObjectMapper(com.fasterxml.jackson.databind)를 이용하면 쉽게 변환하여 보낼 수 있었다.
반대로, Response도 아래와 같이 처리했다.
JsonNode node = mapper.readValue(jsonStr, JsonNode.class);
List<Map<String, String>> message = mapper.convertValue(node.findPath("result"), new TypeReference<List<Map<String, String>>>() {});
Response의 타입이 Map<String, List<Map<String, String>>> 로 복잡하게 오는 것을 처리한 예제이다.
이해하기 쉽게 실 Json Data를 첨부하자면,
{
"result" : [
{
"RTNMSG":"정상적으로 처리되었습니다.",
"RTNCD":"0",
"P_CHECK":"N"
}
]
}
이렇게 전달받았기 때문에 위 소스처럼 타입을 지정하였다.
간단하게 테스트할 소스를 구글링하다, 참고할만한 글이 없어 직접 작성한다...
'Programming' 카테고리의 다른 글
DDD(Domain Driven Design) - [NHN FORWARD 22] DDD 뭣이 중한디? (1) | 2024.06.12 |
---|---|
JDK Vender 확인 명령어 (0) | 2021.03.17 |
JAVA - Classpatch 지정 시 오류 발생 해결법 (0) | 2020.08.18 |
C언어 - 분기문 (goto, break, continue, return) (0) | 2020.06.24 |
C언어 - 비트연산자 / 연산자 (0) | 2020.06.22 |