자바를 사용한 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 디코딩

다음 예제는 JSONObjectJSONArray 여기서 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]