자바를 사용한 JSON
이 장에서는 Java 프로그래밍 언어를 사용하여 JSON 객체를 인코딩하고 디코딩하는 방법에 대해 설명합니다. JSON 용 Java로 프로그래밍을 시작할 환경을 준비하는 것부터 시작하겠습니다.
환경
Java를 사용하여 JSON 인코딩 및 디코딩을 시작하기 전에 사용 가능한 JSON 모듈을 설치해야합니다. 이 자습서에서는 JSON.simple 을 다운로드하여 설치 했으며 위치를 추가했습니다.json-simple-1.1.1.jar 파일을 환경 변수 CLASSPATH에 추가합니다.
JSON과 Java 엔티티 간의 매핑
JSON.simple은 디코딩 또는 구문 분석 중에 엔티티를 왼쪽에서 오른쪽으로 매핑하고 인코딩하는 동안 엔티티를 오른쪽에서 왼쪽으로 매핑합니다.
JSON | 자바 |
---|---|
끈 | java.lang.String |
번호 | java.lang.Number |
참 | 거짓 | java.lang.Boolean |
없는 | 없는 |
정렬 | java.util.List |
목적 | java.util.Map |
디코딩에서의 기본 콘크리트 클래스 를 java.util.List가 있다 org.json.simple.JSONArray 와의 기본 콘크리트 클래스 java.util.Map이 있다 org.json.simple.JSONObject .
자바로 JSON 인코딩
다음은 java.util.HashMap의 서브 클래스 인 Java JSONObject를 사용하여 JSON 객체를 인코딩하는 간단한 예제입니다. 주문이 제공되지 않습니다. 엄격한 요소 순서가 필요한 경우 java.util.LinkedHashMap과 같은 순서가 지정된 맵 구현과 함께 JSONValue.toJSONString (map) 메소드를 사용하십시오.
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
System.out.print(obj);
}
}
위의 프로그램을 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
다음은 Java JSONObject를 사용하여 스트리밍하는 JSON 객체를 보여주는 또 다른 예입니다.
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();
System.out.print(jsonText);
}
}
위의 프로그램을 컴파일하고 실행하면 다음 결과가 생성됩니다.
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
자바에서 JSON 디코딩
다음 예제는 JSONObject 과 JSONArray 여기서 JSONObject는 java.util.Map이고 JSONArray는 java.util.List이므로 Map 또는 List의 표준 작업으로 액세스 할 수 있습니다.
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array = (JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2 = (JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1"));
s = "{}";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,]";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe) {
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
}
}
위의 프로그램을 컴파일하고 실행하면 다음 결과가 생성됩니다.
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]