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 를 넣을수 있고 그안에 또! 또!! 계속 넣을 수 있다.
결과값은 아래와 같다.
다만 원하는 것을 가지고와서 쓸려면 위에서부터 차례차레 선언하면서 내려가야한다.
만약 아래와 같이 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 을 발생시킨다.
라이브러리 선언 만으로 바로 JSON 을 사용할 수 있지만
사용하는 방법이 너무 직관적이라 단순 작업을 필요로 하는 것같다.
좀 더 빠르게 특정 단계의 값을 찾는 방법이 있을려나?????
'일하딩 > Web' 카테고리의 다른 글
[JAVA] 정규표현식으로 특정 패턴의 문자열 찾기 (0) | 2020.12.21 |
---|---|
[JSP] JSTL, EL 이란 무엇인가? (0) | 2020.11.17 |
[CSS] Position 이란? (static, relative, sticky, fixed, absolute) (0) | 2020.07.26 |
[Html] Button 태그 사용시 자동 submit 없애기 (0) | 2019.12.16 |
[Jsoup] Java 로 웹 크롤링 하기. (0) | 2019.12.03 |
댓글