본문 바로가기
일하딩/Web

[Java] JSON 파싱하는 방법!

by 별난형 2020. 11. 12.

JSON 데이터를 사용하면서 한번씩 Java 에서 처리해야하는 경우가 생긴다.

 

Java 에서 JSON 을 사용하는 가장 간단한 방법은

 

org.json 의 라이브러리를 사용하는 것이다.

 

maven 을 사용한다면 pom.xml 에

 

<dependency>
	<groupId>org.json</groupId>
	<artifactId>json</artifactId>
	<version>20180813</version>
</dependency>

이걸 추가하면 라이브러리를 사용할 수 있게 된다.

 

그럼 JSON 을 사용해보자.

 

import org.json.JSONObject;

public class JsonTest {

	public static void main(String[] args) {
		String json = "{ 'A' : 'Hello Json!!',"
				+ "'B' : '안녕하세요 제이슨',"
				+ "'C' : 'Json Data',"
				+ "'Boolean' : 'true',"
				+ "'Number' : 2020"
				+ "}";
		
		JSONObject jsonObj = new JSONObject(json);
		
		System.out.println("A : " + jsonObj.get("A"));
		System.out.println("B : " + jsonObj.get("B"));
		System.out.println("C : " + jsonObj.get("C"));
		System.out.println("Boolean : " + (jsonObj.getBoolean("Boolean") == false));
		System.out.println("Number : " + jsonObj.get("Number"));
	}

}

위와 같이 Object 형태의 JSON 데이터를 임시로 만들어서 테스트를 하였다.

 

이 라이브러리에서 처리할 수 있는 데이터의 형태는 문자열, 숫자, Boolean 으로 3가지 이다.

 

결과값은 

 

결과값

JSON 데이터의 형태로 Object 와 Array 를 넣을 수도 있다.

 

import org.json.JSONArray;
import org.json.JSONObject;

public class JsonTest {

	public static void main(String[] args) {
		
		String json2 = "{ 'Object' : { 'Child1' : 'Object 안에 Object'},"
				+ "'Array1' : ["
				+ "{'ArrayChild1' : 'Object 안에 Array 안에 Object1'},"
				+ "{'ArrayChild2' : 'Object 안에 Array 안에 Object2'},"
				+ "{'ArrayChild3' : 'Object 안에 Array 안에 Object3'},"
				+ "],"
				+ "'Array2' : ["
				+ "'Object 안에 Array 1행', "
				+ "'Object 안에 Array 2행', "
				+ "'Object 안에 Array 3행'"
				+ "]}";
		
		JSONObject json2Obj = new JSONObject(json2);
		JSONObject Object = (JSONObject) json2Obj.get("Object");
		JSONArray Array1 = (JSONArray) json2Obj.get("Array1");
		JSONArray Array2 = (JSONArray) json2Obj.get("Array2");
		
		System.out.println("Object to String : " + json2Obj.get("Object").toString());
		System.out.println("Child1 : " + Object.get("Child1"));
		System.out.println("Array1 : " + Array1.get(0));
		System.out.println("Array2 : " + Array2.get(1));
	}
}

위와 같이 Object 안에 Array, Object 를 넣을수 있고 그안에 또! 또!! 계속 넣을 수 있다.

결과값은 아래와 같다.

 

결과값 2

 

다만 원하는 것을 가지고와서 쓸려면 위에서부터 차례차레 선언하면서 내려가야한다.

 

만약 아래와 같이 json2Obj 안에서 바로 Child1 을 찾으면

 

import org.json.JSONObject;

public class JsonTest {

	public static void main(String[] args) {
		
		String json2 = "{ 'Object' : { 'Child1' : 'Object 안에 Object'}"
				+ "}";
		
		JSONObject json2Obj = new JSONObject(json2);
		
		System.out.println("Child1 : " + json2Obj.get("Child1"));
	}
}

아래와 같이 Child1 을 찾을 수 없다고 Exception 을 발생시킨다.

 

바로 Child1 찾은 결과

라이브러리 선언 만으로 바로 JSON 을 사용할 수 있지만

사용하는 방법이 너무 직관적이라 단순 작업을 필요로 하는 것같다.

 

좀 더 빠르게 특정 단계의 값을 찾는 방법이 있을려나?????

 

 

댓글