728x90
반응형
최근에 취업 과제로 특정 API를 호출해 JSON으로 받는 문제가 있다.
매우 간단한 예제라서 간단하게 정의해보겠다.
gradle 추가하기
1. JSON으로 받기
implementation 'org.json:json:20220320'
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
2. httpcomponents.httpclinet 추가
implementation 'org.apache.httpcomponents:httpclient:4.5'
implementation 'com.google.code.gson:gson:2.8.5'

Request JSON

Response JSON
{
"status": "success",
"data": {
"jsonList": {
"scrap002": [
{
"총사용금액": "3,000,000",
"소득구분": "산출세액"
}
],
"scrap001": [
{
"소득내역": "급여",
"총지급액": "40,000.000",
"업무시작일": "2020.10.03",
"기업명": "(주)초합금",
"이름": "마징가",
"지급일": "2020.11.02",
"업무종료일": "2020.11.02",
"주민등록번호": "880601-2455116",
"소득구분": "근로소득(연간)",
"사업자등록번호": "013-44-56689"
}
],
"errMsg": "",
"company": "test",
"svcCd": "test01",
"userId": "3"
},
"appVer": "2021112501",
"hostNm": "jobis-codetest",
"workerResDt": "2022-08-03T04:40:51.252195",
"workerReqDt": "2022-08-03T04:40:51.252548"
},
"errors": {}
}
|
우선 해당 API를 호출해보자.
private String scrapUrl = "https://~~/v1/scrap";
public void test() {
HttpHeaders httpHeader = new HttpHeaders();
httpHeader.set("Authorization", header.substring(7));
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
// timeout 관련 설정
factory.setConnectTimeout(10000); // 10초
factory.setReadTimeout(300000); // 300초
RestTemplate restTemplate = new RestTemplate(factory);
Member member = memberRepository.findByUserId(getDecryptJwt(header)).get(0);
JSONObject reqParam = new JSONObject();
reqParam.put("name", member.getName());
reqParam.put("regNo", AES256Cipher.decryptText(member.getRegNo()));
HttpEntity httpEntity = new HttpEntity(reqParam, httpHeader);
ResponseEntity<Map> resultMap = restTemplate.exchange(scrapUrl, HttpMethod.POST, httpEntity, Map.class);
HashMap<String, Object> resultData = (HashMap<String, Object>) resultMap.getBody().get("data");
try {
ObjectMapper mapper = new ObjectMapper();
JSONParser parser = new JSONParser();
Object obj = parser.parse(mapper.writeValueAsString(resultData.get("jsonList")));
JSONObject jsonObj = (JSONObject) obj;
JSONArray scrap001jsonArr = (JSONArray) jsonObj.get("scrap001");
JSONArray scrap002jsonArr = (JSONArray) jsonObj.get("scrap002");
JSONArray scrap003jsonArr = (JSONArray) jsonObj.get("scrap003");
JSONArray scrap004jsonArr = (JSONArray) jsonObj.get("scrap004");
log.info("scrap001 : " + scrap001jsonArr.get(0));
log.info("scrap002 : " + scrap002jsonArr.get(0));
// log.info("scrap003 : " + scrap003jsonArr.get(0));
// log.info("scrap004 : " + scrap004jsonArr.get(0));
if(scrap001jsonArr.get(0) != null) {
HashMap<String, String> scrap001Obj = new HashMap<String, String>();
scrap001Obj = mapper.readValue(scrap001jsonArr.get(0).toString(), HashMap.class);
log.info("scrap001Obj : " + scrap001Obj);
Scrap001 scrap001 = new Scrap001();
scrap001.setIncomeDetails(scrap001Obj.get("소득내역"));
scrap001.setTotalPayment(scrap001Obj.get("총지급액"));
scrap001.setStartDate(scrap001Obj.get("업무시작일"));
scrap001.setCompanyName(scrap001Obj.get("기업명"));
scrap001.setPaymentDate(scrap001Obj.get("이름"));
scrap001.setEndDate(scrap001Obj.get("지급일"));
scrap001.setName(scrap001Obj.get("업무종료일"));
scrap001.setRegNo(AES256Cipher.encryptText(scrap001Obj.get("주민등록번호")));
scrap001.setIncomeDetails(scrap001Obj.get("소득구분"));
scrap001.setCompanyNum(scrap001Obj.get("사업자등록번호"));
scrap001.setMember(member);
scrap001Repository.save(scrap001);
member.setS1(scrap001);
}
if(scrap002jsonArr.get(0) != null) {
HashMap<String, String> scrap002Obj = new HashMap<String, String>();
scrap002Obj = new ObjectMapper().readValue(scrap002jsonArr.get(0).toString(), HashMap.class);
log.info("scrap002Obj : " + scrap002Obj);
Scrap002 scrap002 = new Scrap002();
scrap002.setTotalAmountUsed(scrap002Obj.get("총사용금액"));
scrap002.setIncomeClassification(scrap002Obj.get("소득구분"));
scrap002.setMember(member);
scrap002Repository.save(scrap002);
member.setS2(scrap002);
}
if(scrap003jsonArr.get(0) != null) {
HashMap<String, String> scrap003Obj = new HashMap<String, String>();
scrap003Obj = new ObjectMapper().readValue(scrap003jsonArr.get(0).toString(), HashMap.class);
log.info("scrap003Obj : " + scrap003Obj);
Scrap003 scrap003 = new Scrap003();
scrap003.setHomeOwner(scrap003Obj.get("주택소지여부"));
scrap003.setSubscribeForHousing(scrap003Obj.get("주택청약가입여부"));
scrap003.setSubscribeForHousingPayment(scrap003Obj.get("주택청약납입금"));
scrap003.setMember(member);
scrap003Repository.save(scrap003);
member.setS3(scrap003);
}
if(scrap004jsonArr.get(0) != null) {
HashMap<String, String> scrap004Obj = new HashMap<String, String>();
scrap004Obj = new ObjectMapper().readValue(scrap004jsonArr.get(0).toString(), HashMap.class);
log.info("scrap004Obj : " + scrap004Obj);
Scrap004 scrap004 = new Scrap004();
scrap004.setTaxAccountant(scrap004Obj.get("수임된세무사"));
scrap004.setConsentAcceptance(scrap004Obj.get("수임동의여부"));
scrap004.setTaxAccountantHp(scrap004Obj.get("수임된세무사연락처"));
scrap004.setMember(member);
scrap004Repository.save(scrap004);
member.setS4(scrap004);
}
} catch (Exception e) {
e.printStackTrace();
}
}
728x90
반응형
'IT > WEB' 카테고리의 다른 글
[API] RESTful API 설계 시 유의해야할 점 (0) | 2022.08.10 |
---|---|
[WEB] JWT 세팅 밋 헤더에 세팅.. (0) | 2022.08.03 |
[Shell Script] 리눅스 서버에 스프링부트 war 실행 (0) | 2022.07.26 |
[JAVA] lombok @Getter, @Setter 제외하고 따로 getter 만들기 (0) | 2022.07.20 |
[Spring boot] 엑셀 다운로드 기능 공통 코드 (0) | 2022.07.13 |