Gson은 Java 객체를 JSON으로 변환하거나 그 반대로 변환할 수 있는 구글에서 제공하는 라이브러리입니다. 또한 JSON 문자열을 동등한 Java 객체로 변환하는 데에도 활용할 수 있습니다. Java 객체를 JSON으로 파싱하거나 JSON을 Java 객체로 파싱하려면 Java 프로그램에 com.google.gson 패키지를 임포트해야 합니다.
JSON 객체의 모든 키를 가져오려면 JsonObject의 entrySet() 메서드를 사용하면 됩니다. 이 메서드는 키와 값의 쌍을 Set<Map.Entry<String, JsonElement>> 형태로 반환하며, 이를 반복문으로 순회하면서 각 항목의 키를 추출할 수 있습니다.
예제 코드
import java.util.*;
import com.google.gson.*;
import org.json.*;
public class GetJSONAllKeysTest {
public static void main(String[] args) {
String jsonStr = "{\"Raja\":\"Java\", \"Ravi\":\"SAP\", \"Chaitanya\":\"Python\", \"Adithya\":\"Spark\"}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonStr);
JsonObject obj = element.getAsJsonObject();
Set<Map.Entry<String, JsonElement>> entries = obj.entrySet();
for(Map.Entry<String, JsonElement> entry: entries) {
System.out.println(entry.getKey());
}
}
}실행 결과
Raja Ravi Chaitanya Adithya
코드 설명
위 예제의 동작 과정을 단계별로 살펴보면 다음과 같습니다.
1. JSON 문자열 파싱: JsonParser의 parse() 메서드를 사용하여 JSON 문자열을 JsonElement로 변환합니다.
2. JsonObject로 변환: getAsJsonObject() 메서드를 호출하여 JsonElement를 JsonObject 타입으로 변환합니다.
3. 엔트리 집합 가져오기: entrySet() 메서드를 통해 JSON 객체 내 모든 키-값 쌍을 Set 형태로 얻습니다.
4. 키 출력: 향상된 for문으로 각 엔트리를 순회하면서 getKey() 메서드로 키만 출력합니다.
참고 사항
Gson 2.8.6 버전부터 new JsonParser() 인스턴스 생성 방식은 deprecated(사용 중단 권고)되었으며, 대신 정적 메서드인 JsonParser.parseString(jsonStr)을 사용하는 것이 권장됩니다. 최신 버전을 사용한다면 아래와 같이 작성할 수 있습니다.
JsonObject obj = JsonParser.parseString(jsonStr).getAsJsonObject();
또한 키만 필요하고 값이 필요 없다면 obj.keySet() 메서드를 사용하는 더 간결한 방법도 있습니다.