자바를 사용한 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]