GO SIWOO!

[Java] JSONObject & JSONArray & JSONParser 사용법과 json-simple 본문

Develop/자바(Java)

[Java] JSONObject & JSONArray & JSONParser 사용법과 json-simple

gosiwoo 2023. 3. 7. 22:13

📌 json-simple 특징

1. 내부적으로 JSON 데이터를 처리하기 위해 Map과 List를 사용합니다.

2. JSON 데이터를 구문 분석하고 JSON을 파일에 기록할 수 있습니다.

3. 타사 라이브러리에 대한 의존성이 없습니다.

4. 매우 가벼운 API이며 간단한 JSON 데이터를 처리하기 위해 적합합니다.

 

 

📌 build.gradle

implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'

 

 

📌 JSONObject 사용법

JSONObject 클래스를 사용해 json 객체를 다룰 수 있다.

JSONObject jsonObject = new JSONObject();

jsonObject.put("Name", "gosiwoo");
jsonObject.put("Phone", "010-1234-5678");
jsonObject.put("Adress", "Seoul");

System.out.println(jsonObject.toJSONString());
System.out.println(jsonObject.toString());

JSONObject 객체를 생성하고 put() 메서드를 사용해 데이터를 삽입할 수 있다. 

toJSONString(), toString()을 통해서 문자열 데이터로 출력이 가능하다.

하지만 다음 출력 결과를 보면 Name, Phone, Adress key 값의 순서로 입력을 하였지만 순서와 관계없이 출력되는 모습을 볼 수 있다.

 

JSONObject.toJSONString(), JSONObject.toString() 출력 결과

 

순서와 관계 없이 출력되는 이유는 삽입 순서를 보장하지 않는 HashMap을 상속받기 때문이다.

JSONObject의 상속

 

📌 JSONArray 사용법

JSONArray 클래스를 사용해 json 객체 배열을 다룰 수 있다.

JSONArray jsonArray = new JSONArray();
JSONObject jsonObject_first = new JSONObject();
JSONObject jsonObject_second = new JSONObject();

jsonObject_first.put("Name", "gosiwoo");
jsonObject_first.put("Phone", "010-1234-5678");
jsonObject_first.put("Adress", "Seoul");

jsonObject_second.put("Name", "backsiwoo");
jsonObject_second.put("Phone", "010-5678-1234");
jsonObject_second.put("Adress", "Busan");

jsonArray.add(jsonObject_first);
jsonArray.add(jsonObject_second);

System.out.println(jsonArray.toJSONString());

JSONArray 객체에 JSONObject 객체 2개를 add() 메소드를 이용해 json 데이터를 넣어주었다. 

JSONObject때와 마찬가지로 toJSONString() 메서드와 toString() 메서드 둘 다 사용 가능하며 출력 결과는 다음과 같다.

 

JSONArray.toJSONString() 출력 결과

 

 

📌 JSONParser 사용법

json 형태의 문자열을 JSONParser의 parse() 메서드를 통해서 Object 객체로 담은 후 JSONObject로 다운캐스팅 해 변환한다.

JSONParser jsonParser = new JSONParser(); // JSONParser 객체 생성

try {
    String jsonStr = "{\"Phone\":\"010-1234-5678\",\"Adress\":\"Seoul\",\"Name\":\"gosiwoo\"}";

    Object obj = jsonParser.parse(jsonStr); // JSONParser 객체를 이용해여 JSON String 을 객체로 parse
    JSONObject jsonObject = (JSONObject) obj; // Object 객체를 JSONObject 객체로 다운캐스팅
    String phone = (String) jsonObject.get("Phone"); // JSONObject에서 Phone key 값으로 value 찾아오기

    System.out.println("Phone value : " + phone);
} catch (org.json.simple.parser.ParseException e) {
    e.printStackTrace();
}

위의 코드는 JSONParser 객체를 생성해서 JSON 형태의 String을 JSONObject로 바꾸고 Key 값을 통해 value를 가져온다.

아래의 출력 결과를 보여준다.

Parser를 할 때는 ParseException 예외 처리를 해주도록 하자.

 

JSONParser를 이용한 JSON String에서 값 출력 결과