GSON을 사용해서 JSON 파싱[JAVA]

JuJaeng2·2023년 11월 6일

JSON이란?

JavaScript Object Notation

경량화 되어 있는 하나의 데이터 형식.
서로 다른 언어들간에 데이터를 주고받을 수 있도록 만들어진 텍스트 기반의 형식.

  1. XML보다 경량화 된 데이터 교환 방식의 표기 방식
  2. 간단한 포맷 ⇒ 읽고 쓰기 쉬움
  3. JSON은 텍스트 포맷이다
  4. XML보다 가볍고 빠르다.
  5. XML과 달리 타입을 가진다.
    JSON : String, Number, Array, Boolean
    XML : String (모든 데이터)
  • name - value쌍으로 이루어져 있다
    • name은 String 이기 때문에 반드시 큰따옴표(””)로 묶어줘야 한다.
    • name과 value는 콜론으로 이어져 있다 ⇒ ( “name” : value ) ** value가 String이면 마찬가지로 큰따옴표로 묶어줘야 한다.**
  • JSON에서의 객체
    • name - value 쌍의 집합

Object

  • { } 로 감싸져 있는 것
  • 1개의 Object
{
	"name" : "홍길동",
	"age" : 25
}
  • Key : “name”, “age”
  • Value : “홍길동”, 25

Array

[ ]로 감싸져 있는 것

{
  "person1": [
      {
	        "name" : "홍길동",
					"age" : 25
      },
      {
            "name" : "이순신",
						"age" : 30
      }
  ]
}

-- Gson을 사용하여 파싱하기 --

파싱이란?

  • JSON 형태로 온 데이터를 그대로 사용할 수 없기 때문에 원하는 데이터를 뽑아서 사용하기 쉽게 가공이 필요하다 ⇒ 파싱

Gson?

google 에서 만든 json 파싱 라이브러리 이다. 그래서 gson인가..?? (google + json)

  • JAVA에서 JSON을 파싱하기 위한 라이브러리 X ⇒ 외부 라이브러리 필요
  • 그중 하나가 Gson이다.

사용법

1. 파싱을 위한 JsonParser 객체 만들기

JsonParser jsonParser = new JsonPareser();

2. Object 타입인지 Array 타입인지에 따라 담는 객체가 다르다

 String json = 
 "{'fruit': [
 			{'NO':1,'NAME':'APPLE','KOR':'사과','PRICE':'1000'},
 		    {'NO':2,'NAME':'BANANA','KOR':'바나나','PRICE':'500'}
 			],
   'animal': [
 			{'NO':1,'NAME':'cat','KOR':'고양이','age':'3'},
           	{'NO':2,'NAME':'dog','KOR':'개','age':'5'},
 			]}";
 
 JsonParser jsonParser = new JsonPareser();
 
 //예시의 경우 먼저 Object로 감싸져 있다.
 JsonObject jsonObject = new (JsonObject) jsonParser.parse(json);
 JsonArray jsonArray = (JsonArray) jsonObject.get("fruit");
 
 //jsonArray에서의 첫번째 Object
 JsonObject firstObj = (JsonObject) jsonArray.get(0);
 
 //firstObj에서 NAME값 가져오기
 String name = firstObj.get("NAME").getAsString();
 
 //firstObj.get("NAME")은 Obejct이기 때문에 .getAsString()을 붙여서 String으로 변환

주의

 String name = firstObj.get("NAME").toString();

이렇게 할 경우 큰따옴표 두개가 생긴다.
그러므로 .getAsString()으로 받아야 한다.

profile
다 잘하고 싶은 개발자

0개의 댓글