API에 데이터를 요청해서 받아올 때 주로 JSON의 데이터 구조로 받게된다. 그러면 우선 받은 String을 JSON으로 변환하고, 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"]}
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"]}
각각의 특징을 간단하게 이야기하자면, 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