반응형
Gson과 JSON 파싱은 복잡한 JSON 데이터를 다루는 데 유용합니다. JSON 데이터를 트리 구조로 표현하거나 특정 필드를 추출하거나 조건에 따라 데이터를 처리할 때 Gson의 강력한 기능을 활용할 수 있습니다. 이러한 작업은 REST API 응답 처리, 설정 파일 읽기 등 다양한 시나리오에서 필수적입니다.
JSON 데이터를 트리 구조로 파싱 (JsonObject, JsonArray)
Gson은 JSON 데이터를 트리 구조로 파싱할 수 있도록 JsonObject와 JsonArray를 제공합니다. 이는 JSON 데이터에 포함된 특정 필드나 값을 탐색할 때 유용합니다.
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonTreeParsingExample {
public static void main(String[] args) {
String jsonData = """
{
"country": "대한민국",
"cities": [
{"name": "서울", "population": 9733509},
{"name": "부산", "population": 3413841},
{"name": "인천", "population": 2947404}
]
}
""";
JsonObject jsonObject = JsonParser.parseString(jsonData).getAsJsonObject();
// 필드 추출
String country = jsonObject.get("country").getAsString();
System.out.println("Country: " + country);
// JsonArray 탐색
JsonArray cities = jsonObject.getAsJsonArray("cities");
for (var cityElement : cities) {
JsonObject city = cityElement.getAsJsonObject();
String name = city.get("name").getAsString();
int population = city.get("population").getAsInt();
System.out.println("City: " + name + ", Population: " + population);
}
}
}
위 코드는 JsonObject를 사용하여 JSON 데이터를 트리 형태로 탐색하고, 각 도시 이름과 인구를 출력합니다.
반응형
특정 필드의 값 추출
특정 JSON 필드만 필요할 때 Gson의 JsonElement를 활용하면 효율적으로 값을 추출할 수 있습니다.
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class ExtractFieldExample {
public static void main(String[] args) {
String jsonData = """
{
"name": "서울",
"details": {
"population": 9733509,
"area": 605.21
}
}
""";
JsonObject jsonObject = JsonParser.parseString(jsonData).getAsJsonObject();
JsonElement population = jsonObject.getAsJsonObject("details").get("population");
System.out.println("Population: " + population.getAsInt());
}
}
이 코드는 JsonObject를 중첩 탐색하여 서울의 인구를 출력합니다.
조건에 따른 JSON 데이터 처리
조건을 기반으로 특정 JSON 데이터를 처리하려면 루프와 조건문을 조합합니다. 예를 들어, 인구가 300만 이상인 도시만 필터링합니다.
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class ConditionalJsonProcessing {
public static void main(String[] args) {
String jsonData = """
{
"country": "대한민국",
"cities": [
{"name": "서울", "population": 9733509},
{"name": "부산", "population": 3413841},
{"name": "인천", "population": 2947404}
]
}
""";
JsonObject jsonObject = JsonParser.parseString(jsonData).getAsJsonObject();
JsonArray cities = jsonObject.getAsJsonArray("cities");
for (var cityElement : cities) {
JsonObject city = cityElement.getAsJsonObject();
int population = city.get("population").getAsInt();
if (population > 3000000) {
System.out.println("Major City: " + city.get("name").getAsString());
}
}
}
}
위 코드는 인구 조건에 따라 주요 도시를 필터링하여 출력합니다.
Gson의 공식 문서 및 가이드
- Gson 공식 문서: https://github.com/google/gson
반응형
'JAVA' 카테고리의 다른 글
[JAVA] 실전 프로젝트에서의 Gson 활용 (0) | 2024.12.15 |
---|---|
[JAVA] Gson과 REST API (0) | 2024.12.15 |
[JAVA] Gson의 제한사항과 문제 해결 (0) | 2024.12.14 |
[JAVA] Gson을 활용한 성능 최적화 (0) | 2024.12.14 |
[JAVA] Gson과 날짜/시간 처리 (0) | 2024.12.14 |
[JAVA] Gson의 필드 컨트롤 (0) | 2024.12.14 |
[JAVA] Gson과 복합 객체 (0) | 2024.12.14 |
[JAVA] Gson의 고급 기능 (1) | 2024.12.14 |