[JAVA] json parse(with gson) #1

오늘내일·2023년 9월 27일

요즘 open api를 보면 json 형식으로 데이터를 주고 받는 경우가 많다. 그래서 java에서 gson 라이브러리를 이용해서 json 파싱하는 방법에 대해서 알아보려고 한다. 넘어오는 json문자열의 형식에 따라서 파싱하는 방법이 다르다.

String json = "{\"name\": \"Messi\", \"email\" : \"test@test.com\", \"age\" : 20}";

위의 간단한 json 형식을 파싱해보자.

1. JsonObject 사용

JsonElement element = JsonParser.parseString(json);
	   
JsonObject object = element.getAsJsonObject();


System.out.println(object.get("name").getAsString());
	 
System.out.println(object.get("age").getAsInt());

일단 제일 위의 JsonElement를 사용하여 문자열을 파싱하여 객체를 만든다. 그리고 getAsJsonObject()를 이용하여 JsonObject로 타입 변환을 한다. 출력문 안에 보면 JsongObject는 get("key")를 이용하여 데이터를 읽어올 수 있다. 이 때 들어오는 데이터가 String이라면 getAsString, int라면 getAsInt를 사용한다.

나중에 자세히 보겠지만 key에 대응하는 데이터가 json형식인 경우가 있다. 이럴 땐 getAsJsonObject()를 사용하여 JsonObject 타입으로 읽어오면 된다.

2. gson 사용

Gson gson = new Gson();
	    
Map<String, Object> map = gson.fromJson(json, Map.class);
		
for (Map.Entry<String, Object> entry : map.entrySet()) {
	System.out.println(entry.getKey() + " ::: " + entry.getValue());
}

//출력결과
//name ::: Messi
//email ::: test@test.com
//age ::: 20.0

gson을 라이브러리의 fromJson 함수를 사용하여 json을 Map으로 파싱할 수 있다.

fromJson 두번째 파라미터로 클래스를 받기 때문에 아래와 같이 사용 가능하다.

class Member{
	String name;
	String email;
	int age;
}
//---------------------//
Gson gson = new Gson();

Member member = gson.fromJson(json, Member.class);
		
System.out.println(member.name);
System.out.println(member.email);
System.out.println(member.age);

//출력결과
//Messi
//test@test.com
//20

직접 클래스를 선언하고 그 형식에 맞게 파싱해 올 수도 있다.

다음엔 좀 더 복잡한 json문자열을 파싱해보자.

profile
다시 시작합니다.

0개의 댓글