java

[java] JSON 라이브러리

yhansol 2022. 12. 28. 14:50
728x90
반응형

자바에는 org.json 라이브러리를 이용하여 JSON 데이터를 다룰 수 있다.

org.json 라이브러리에서 제공하는 JSONObject, JSONArray 클래스는 JSON데이터를 가지고 있고 JSON형식의 문자열로 출력이 가능하다.

JSON

JSON은 JavaScript Object Notation 의 약자로 자바스크립트에서 데이터를 전달하기 위해 만들어졌다.
JSON 파일의 특징으로는 다음과 같이 key-value 형태로 데이터를 가진다.

{
   "name" : "james",
   "info" : {
      "age" : 28,
      "from" : "USA",
      "job" : "student"
   }
}

JSONObject

JSONObject 는 JSON에서 key-value 데이터를 쌍으로 표현하는 객체다.
JSONObject 에 데이터를 입력할때는 put(key, value) 형태로 입력한다.
toString() 은 JSONObejct가 가지고 있는 데이터를 JSON 형식으로 출력할때 사용한다.

import org.json.JSONException;
import org.json.JSONObject;

public class testJson {

    public static void main(String[] args) throws JSONException {

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "james");
        jsonObject.put("city", "Seoul");

        System.out.println(jo.toString());
    }
}

위 코드를 실행하면

{"name" : "james", "city" : "Seoul"}

JSONArray

JSON은 key-value 형태로 데이터를 가진다. value는 아래처럼 Array 타입이 될 수도 있다.

"info" : ["age" : 28, "from" : "USA", "job" : "student"]

JSONArray 는 '[' 로 시작하고 ']' 로 끝내어 표현한다.
'[]' 안에는 JSONObject, String 값 등을 담을 수 있다.


LIST, MAP 형태 데이터를 JSON으로 변환하기

/**
 * map을 JSON형태로 변환
 *
 */
 public static JSONArray convertMapToJsonArray(HashMap<String, String> map) {
     JSONArray jsonArray = new JSONArray();
    for (Map.Entry<String, String> entry : map.entryMap()) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("key", entry.getKey());
        jsonObject.put("value", entry.getValue());
        jsonArray.add(jsonObject);
    }
    return jsonArray;
 }

 /**
  * list<map>을 JSON형태로 변환
  *
  */
public static JSONArray convertListToJson(List<HashMap<String, Object>> list) {
    JSONArray jsonArray = new JSONArray();
    for (Map<String, Object> map : list) {
        jsonArray.add(convertMapToJson(map));
    }
    return jsonArray;
}