반응형

JSON obejct는 아래 의존성을 사용하였음

org.json은 사용해봤는데 이건 또 첨 사용해봄..

		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
		</dependency>

 

URL 요청 시 응답 결과는 아래와 같음

<200,{"result":0,"data":[
{"category":"animal","type":"tiger","name":{"girl":"tigirl","boy":"tiboy"},count":"2},
{"category":"animal","type":"pig","name":{"girl":"pigirl","boy":"pigboy"},"count":2}
]

 

URL 요청 및 응답 파싱하기.

//요청할 URL의 헤더 생성
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8");

//요청할 URL 생성
URI Url = URI.create("https://testsite.co.kr/api");

//요청
RequestEntity<String> requestEntity = new RequestEntity<>(headers, HttpMethod.GET, Url);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<JSONObject> responseEntity = restTemplate.exchange(requestEntity, JSONObject.class);

//응답 파싱
JSONObject responseJSON = responseEntity.getBody();
//body에서 "data"부분을 JSON Array로 파싱
JSONArray responseArray = new JSONArray(){{ addAll((Collection)responseJSON.get("data"));}};

ObjectMapper objectMapper = new ObjectMapper();
List<JSONObject> dataList = new ArrayList<>();

for(Object obj  : responseArray){
	//JSONArray에서 꺼낸 각 JSON을 obj-> Map 으로 변환시켜 사용한다.
	Map<String,Object> tmpMap= (Map) obj;
	Map<String,Object> listMap = objectMapper.convertValue(tmpMap.getOrDefault("name",null),Map.class);

	if(listMap != null) {
		listMap.put("myList", tmpMap.get("type"));
		JSONObject resultObj = new JSONObject(){{ putAll(listMap);}};
	}
}

 

JSONArray에 add 하기  addAll(Collection)
JSONObject에 put하기 putAll(Map)

json-simple은 첨이라 사용법이 익숙해지질 않음

반응형

+ Recent posts