[Java] JSONObject, JSONArray 간단 정리

cateto·2021년 2월 17일
1
post-thumbnail

API에 데이터를 요청해서 받아올 때 주로 JSON의 데이터 구조로 받게된다. 그러면 우선 받은 String을 JSON으로 변환하고, JSON으로 변환되었을때 그 안에 있는 데이터에 어떻게 접근하고 어떻게 다룰지 한번 정리해보자!

1. JSON이란

JSON은 데이터를 교환하는 문자 기반의 형식이다. 이것은 경량 컴포넌트이며, 프로그래밍 언어로부터 독립적이다. 그리고 우리는 또한 JSONObject에 JSONArray를 추가할 수 있다. 다음은 ArrayList에 몇개의 데이터를 추가하고 그리고 그 데이터를 JSONArray로 구성하고, 결과적으로 JSONObject에 JSONArray를 추가할 것이다.

소스

import org.json.*;
import java.util.*;
public class AddJSONArrayToJSONObjTest {
   public static void main(String args[]) {
      List<String> list = new ArrayList<String>();
      list.add("Raja");
      list.add("Jai");
      list.add("Adithya");
      JSONArray array = new JSONArray();
      for(int i = 0; i < list.size(); i++) {
         array.put(list.get(i));
      }
      JSONObject obj = new JSONObject();
      try {
         obj.put("Employee Names:", array);
      } catch(JSONException e) {
         e.printStackTrace();
      }
      System.out.println(obj.toString());
   }
}

결과값

{"Employee Names:":["Raja","Jai","Adithya"]}

2.JSONArray와 JSONObject의 관계

JSONObject는 텍스트를 읽어서 map과 같은 object를 생산하고 JSONArray는 문자열에서 vector와 같은 object를 생산한다. 또한 우리는 JSONarray를 먼저 생성한 다음 몇가지 데이터를 추가하고 JSONObject에 put()메소드를 통해 추가할 수 있다.

소스

import org.json.*;
public class AddJSONArrayTest {
   public static void main(String[] args) throws JSONException {
      JSONArray array = new JSONArray();
      array.put("INDIA");
      array.put("AUSTRALIA");
      array.put("ENGLAND");
      JSONObject obj = new JSONObject();
      obj.put("COUNTRIES", array);
      System.out.println(obj);
   }
}

결과값

{"COUNTRIES":["INDIA","AUSTRALIA","ENGLAND"]}

3. String을 JSONObject로 바꾸는 방법

각각의 특징을 간단하게 이야기하자면, Gson은 구글에서 제공하는 rich한 오픈소스.
JSON-Simple은 경량의, JDK 1.2와도 호환되는 (즉, 레거시 프로젝트와도 호환 가능한) 오픈소스.
Jackson은 json 뿐만 아니라 다른 오브젝트로 변환할 수 있는 효율적인 라이브러리.
rich하고, 퍼포먼스가 빠르고, streaming을 지원함.(거대한 json 결과물을 메모리의 헤비한 로딩 없이 파싱할 수 있음) 그러나 최소 JDK 1.5 이상이어야 하고, J2ME를 지원하지 않음.

출처 : https://www.tutorialspoint.com/how-can-we-add-a-jsonarray-to-jsonobject-in-java

profile
Curious for Everything

0개의 댓글