https://www.lesstif.com/java/java-json-library-jackson-24445183.html
Java Json library jackson 사용법
2.7 버전부터는 JDK 7 이상이 필요하며 JDK6 을 지원하는 마지막 버전은 2.6.7.1 임
www.lesstif.com
Jackson 라이브러리는 Java 객체와 JSON 데이터 간의 변환을 쉽게 수행할 수 있도록 도와주는 라이브러리 중 하나입니다. 이것은 매우 일반적인 작업으로, Java 객체를 JSON 문자열로 직렬화하거나, JSON 문자열을 Java 객체로 역직렬화하는 데 사용됩니다. Jackson 라이브러리는 JSON 데이터를 파싱하고, 생성하고, 조작하는 다양한 기능을 제공하며, Java의 POJO(Plain Old Java Object) 클래스와 JSON 데이터 간의 매핑을 용이하게 합니다.
[예시 JSON 데이터]
EVApiData :
{"resultMsg":"NORMAL SERVICE.","totalCount":2605,
"items":{
"item":[{
"statNm":"중동역 공영주차장",
"statId":"ME174114",
"chgerId":"01",
"chgerType":"06",
"addr":"부산광역시 해운대구 해운대로 731",
"location":"null",
"useTime":"24시간 이용가능",
"lat":"35.1668257",
"lng":"129.1699787",
"busiId":"ME",
"bnm":"환경부",
"busiNm":"환경부",
"busiCall":"1661-9408",
"stat":"2",
"statUpdDt":"20231010204957",
"lastTsdt":"20231010200916",
"lastTedt":"20231010204956",
"nowTsdt":"",
"powerType":"",
"output":"50","method":"단독","zcode":"26","zscode":"26350",
"kind":"B0","kindDetail":"B001","parkingFree":"N","note":"",
"limitYn":"N","limitDetail":"","delYn":"N","delDetail":"","trafficYn":"N"},
1. ObjectMapper 객체 생성:
ObjectMapper objectMapper = new ObjectMapper();
이 부분에서 ObjectMapper 클래스를 사용하여 JSON 데이터를 처리할 준비를 합니다.
2. JSON 데이터 파싱:
JsonNode jsonNode = objectMapper.readTree(넣을 변수);
readTree 메서드를 사용하여 JSON 형식의 문자열 (EVApiData)을 Jackson의 JsonNode 객체로 파싱합니다. JsonNode는 JSON 데이터를 나타내는 트리 구조를 갖는 객체입니다.
3. 필드 추출:
JsonNode itemNode = jsonNode.path("items").path("item");
JsonNode 객체에서 "items" 필드를 찾고 그 아래에 있는 "item" 필드를 찾습니다. 이렇게 itemNode 변수에 필드를 추출합니다.
4. JSON 데이터를 문자열로 변환:
String itemData = itemNode.toString();
itemNode 객체를 문자열로 변환합니다. 이 문자열은 "item" 필드의 내용을 그대로 포함하고 있습니다.
5. 문자열을 객체로 변환 (선택 사항):
List<Map<String, Object>> itemList = objectMapper.readValue(itemData, new TypeReference<List<Map<String, Object>>() {});
itemData 문자열을 Jackson의 ObjectMapper를 사용하여 Java 객체로 역직렬화합니다. 이 경우, "item" 필드는 JSON 배열로 가정되고, itemList 변수는 Java List로 변환됩니다. 이것은 선택 사항이며, JSON 데이터를 Java 객체로 변환하고자 할 때 사용됩니다.
활용 방법:
위의 코드는 JSON 데이터를 파싱하고 "item" 필드의 내용을 추출하여 문자열로 변환하는 데 사용됩니다. 이것은 API 응답에서 특정 필드를 추출하거나 원하는 데이터를 가져오는 데 유용합니다. itemData에는 JSON 배열로서 "item" 데이터가 문자열로 포함되어 있습니다. 이 데이터를 Java 객체로 변환하려면 itemList을 사용할 수 있습니다. 예를 들어, itemList에는 "item" 데이터가 포함된 리스트로 변환됩니다. 이 데이터를 반복문을 사용하여 처리하거나 원하는 방식으로 활용할 수 있습니다. JSON 데이터의 특정 필드나 데이터를 추출하고 Java 객체로 변환하는 작업은 Jackson 라이브러리를 사용하여 간단하게 수행할 수 있으며, 이를 통해 데이터 처리 및 분석 작업을 효율적으로 수행할 수 있습니다.
총 적용 예시
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
// EVApiData를 파싱하여 JSON 객체로 변환
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(EVApiData);
// "item" 필드 추출
JsonNode itemNode = jsonNode.path("items").path("item");
// itemNode를 문자열로 변환 (또는 필요한 작업 수행)
String itemData = itemNode.toString();
// itemData를 다시 객체로 변환 (선택 사항)
List<Map<String, Object>> itemList = objectMapper.readValue(itemData, new TypeReference<List<Map<String, Object>>()>() {});
// 이제 itemList에 "item" 데이터가 포함되어 있습니다.