[JAVA] json parse(with gson) #1

오늘내일·2023년 9월 27일
0

요즘 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개의 댓글