org.json-빠른 가이드

org.json or JSON-JavaJSON을위한 간단한 Java 기반 툴킷입니다. org.json을 사용하여 JSON 데이터를 인코딩하거나 디코딩 할 수 있습니다.

풍모

  • Specification Compliant − JSON.simple은 JSON 사양-RFC4627을 완벽하게 준수합니다.

  • Lightweight − 클래스가 매우 적고 인코딩 / 디코딩 및 json 이스케이프와 같은 필요한 기능을 제공합니다.

  • XML Conversion − JSON에서 XML로 또는 그 반대로 변환 기능을 제공합니다.

  • HTTP Headers − HTTP 헤더를 JSON으로 변환하거나 그 반대로 지원합니다.

  • Cookie − 쿠키를 JSON으로 또는 그 반대로 변환 할 수 있도록 지원합니다.

  • CDL − 쉼표로 구분 된 목록을 JSON으로 또는 그 반대로 변환하는 기능을 제공합니다.

  • No dependency− 외부 라이브러리 종속성이 없습니다. 독립적으로 포함될 수 있습니다.

  • Java 1.6-1.8 compatible − 소스 코드 및 바이너리는 Java 1.6-1.8과 호환됩니다.

지역 환경 설정

JSON.simple은 Java 용 라이브러리이므로 첫 번째 요구 사항은 시스템에 JDK를 설치하는 것입니다.

시스템 요구 사항

JDK 1.5 이상.
기억 최소 요구 사항이 없습니다.
디스크 공간 최소 요구 사항이 없습니다.
운영 체제 최소 요구 사항이 없습니다.

1 단계 : 시스템에서 Java 설치 확인

먼저 콘솔을 열고 작업중인 운영 체제에 따라 java 명령을 실행하십시오.

OS 직무 명령
윈도우 명령 콘솔 열기 c : \> 자바 버전
리눅스 명령 터미널 열기 $ 자바 버전
터미널 열기 기계 : <joseph $ java -version

모든 운영 체제의 출력을 확인하겠습니다.

OS 산출
윈도우

자바 버전 "1.8.0_101"

Java (TM) SE 런타임 환경 (빌드 1.8.0_101)

리눅스

자바 버전 "1.8.0_101"

Java (TM) SE 런타임 환경 (빌드 1.8.0_101)

자바 버전 "1.8.0_101"

Java (TM) SE 런타임 환경 (빌드 1.8.0_101)

시스템에 Java가 설치되어 있지 않으면 다음 링크 www.oracle.com 에서 Java SDK (Software Development Kit)를 다운로드하십시오 . 이 자습서에서는 Java 1.8.0_101을 설치된 버전으로 가정합니다.

2 단계 : JAVA 환경 설정

설정 JAVA_HOME시스템에서 Java가 설치된 기본 디렉토리 위치를 가리키는 환경 변수. 예를 들면.

OS 산출
윈도우 환경 변수 JAVA_HOME을 C : \ Program Files \ Java \ jdk1.8.0_101로 설정합니다.
리눅스 내보내기 JAVA_HOME = / usr / local / java-current
export JAVA_HOME = / Library / Java / Home

시스템 경로에 Java 컴파일러 위치를 추가합니다.

OS 산출
윈도우 문자열 추가 C:\Program Files\Java\jdk1.8.0_101\bin 시스템 변수의 끝에서 Path.
리눅스 내보내기 경로 = $ PATH : $ JAVA_HOME / bin /
필요하지 않음

명령을 사용하여 Java 설치 확인 java -version 위에서 설명한대로.

3 단계 : org.json 아카이브 다운로드

org.json @ MVNRepository 에서 최신 버전의 org.json jar 파일을 다운로드합니다 . 이 튜토리얼을 작성하는 시점에 json-20180813을 다운로드하여 C : \> JSON 폴더에 복사했습니다.

OS 아카이브 이름
윈도우 json-20180813.jar
리눅스 json-20180813.jar
json-20180813.jar

4 단계 : JSON_JAVA 환경 설정

설정 JSON_JAVAorg.json jar가 머신에 저장된 기본 디렉토리 위치를 가리키는 환경 변수. JSON 폴더에 json-20180813.jar를 저장했다고 가정 해 보겠습니다.

Sr. 아니요 OS 및 설명
1

Windows

환경 변수 JSON_JAVA를 C : \ JSON으로 설정합니다.

2

Linux

내보내기 JSON_JAVA = / usr / local / JSON

Mac

내보내기 JSON_JAVA = / Library / JSON

5 단계 : CLASSPATH 변수 설정

설정 CLASSPATH JSON.simple jar 위치를 가리키는 환경 변수.

Sr. 아니요 OS 및 설명
1

Windows

환경 변수 CLASSPATH를 % CLASSPATH %; % JSON_JAVA % \ json-20180813.jar;.;로 설정합니다.

2

Linux

내보내기 CLASSPATH = $ CLASSPATH : $ JSON_JAVA / json-20180813.jar :.

Mac

내보내기 CLASSPATH = $ CLASSPATH : $ JSON_JAVA / json-20180813.jar :.

CDL 클래스는 쉼표로 구분 된 텍스트를 JSONArray로 또는 그 반대로 변환하는 정적 메서드를 제공합니다.

다음 방법은 예제에서 다룹니다.

  • rowToJSONArray(String) − 쉼표로 구분 된 텍스트를 JSONArray 객체로 변환합니다.

  • rowToString(JSONArray) − JSONArray를 쉼표로 구분 된 텍스트로 변환합니다.

  • toJSONArray(String) − 여러 줄의 쉼표로 구분 된 텍스트를 JSONArray 개체의 개체로 변환합니다.

  • toJSONArray(JSONArray, String) − JSONArray 객체와 쉼표로 구분 된 텍스트를 JSONArray 객체로 변환합니다.

import org.json.CDL;
import org.json.JSONArray;
import org.json.JSONTokener;

public class JSONDemo {
   public static void main(String[] args) {
      String csvData = "INDIA, UK, USA";

      //Case 1: CSV to JSON Array 
      JSONArray jsonArray = CDL.rowToJSONArray(new JSONTokener(csvData));        
      System.out.println(jsonArray);

      //Case 2: JSONArray to CSV        
      System.out.println(CDL.rowToString(jsonArray));

      //Case 3: CSV to JSONArray of Objects
      csvData = "empId, name, age \n" +
         "1, Mark, 22 \n" +
         "2, Robert, 35 \n" +
         "3, Julia, 18";
      System.out.println(CDL.toJSONArray(csvData));

      //Case 4: CSV without header        
      jsonArray = new JSONArray();
      jsonArray.put("empId");
      jsonArray.put("name");
      jsonArray.put("age");
      csvData = "1, Mark, 22 \n" + "2, Robert, 35 \n" + "3, Julia, 18";
      System.out.println(CDL.toJSONArray(jsonArray,csvData));
   }
}

산출

["INDIA","UK","USA"]
INDIA,UK,USA

[{"name":"Mark","empId":"1","age":"22"},
   {"name":"Robert","empId":"2","age":"35"},
   {"name":"Julia","empId":"3","age":"18"}]
[{"name":"Mark","empId":"1","age":"22"},
   {"name":"Robert","empId":"2","age":"35"},
   {"name":"Julia","empId":"3","age":"18"}]

Cookie 클래스는 웹 브라우저의 쿠키 텍스트를 JSONObject로 또는 그 반대로 변환하는 정적 메서드를 제공합니다.

다음 방법은 예제에서 다룹니다.

  • toJSONObject(String) − 쿠키 텍스트를 JSONObject 객체로 변환합니다.

  • toString(JSONObject) − JSONObject를 쿠키 텍스트로 변환합니다.

import org.json.Cookie;
import org.json.JSONObject;

public class JSONDemo {
   public static void main(String[] args) {
      String cookie = "username = Mark Den; expires = Thu, 15 Jun 2020 12:00:00 UTC; path = /";

      //Case 1: Converts Cookie String to JSONObject
      JSONObject jsonObject = Cookie.toJSONObject(cookie);
      System.out.println(jsonObject);

      //Case 2: Converts JSONObject to Cookie String
      System.out.println(Cookie.toString(jsonObject));        
   }
}

산출

{"path":"/","expires":"Thu, 15 Jun 2020 12:00:00 UTC","name":"username","value":"Mark Den"}
username=Mark Den;expires=Thu, 15 Jun 2020 12:00:00 UTC;path=/

CookieList 클래스는 쿠키 목록을 JSONObject로 또는 그 반대로 변환하는 정적 메서드를 제공합니다. 쿠키 목록은 이름 / 값 쌍의 시퀀스입니다.

다음 방법은 예제에서 다룹니다.

  • toJSONObject(String) − 쿠키 목록 텍스트를 JSONObject 객체로 변환합니다.

  • toString(JSONObject) − JSONObject를 쿠키 목록 텍스트로 변환합니다.

import org.json.Cookie;
import org.json.CookieList;
import org.json.JSONObject;

public class JSONDemo {
   public static void main(String[] args) {
      String cookie = "username = Mark Den; expires = Thu, 15 Jun 2020 12:00:00 UTC; path = /";

      //Case 1: Converts Cookie String to JSONObject
      JSONObject cookieJSONObject = Cookie.toJSONObject(cookie);

      JSONObject cookielistJSONObject = new JSONObject();       
      cookielistJSONObject.put(cookieJSONObject.getString("name"), 
         cookieJSONObject.getString("value"));       

      String cookieList = CookieList.toString(cookielistJSONObject);        
      System.out.println(cookieList); 
      System.out.println(CookieList.toJSONObject(cookieList));
   }
}

산출

username=Mark Den
{"username":"Mark Den"}

HTTP 클래스는 웹 브라우저의 헤더 텍스트를 JSONObject로 또는 그 반대로 변환하는 정적 메서드를 제공합니다.

다음 방법은 예제에서 다룹니다.

  • toJSONObject(String) − 헤더 텍스트를 JSONObject 객체로 변환합니다.

  • toString(JSONObject) − JSONObject를 헤더 텍스트로 변환합니다.

import org.json.HTTP;
import org.json.JSONObject;

public class JSONDemo {
   public static void main(String[] args) { 
      JSONObject jsonObject = new JSONObject();
      jsonObject.put("Method", "POST");
      jsonObject.put("Request-URI", "http://www.tutorialspoint.com/");
      jsonObject.put("HTTP-Version", "HTTP/1.1");
        
      //Case 1: Converts JSONObject of Header to String
      String headerText = HTTP.toString(jsonObject);
      System.out.println(headerText); 
        
      headerText = "POST \"http://www.tutorialspoint.com/\" HTTP/1.1";
      //Case 2: Converts Header String to JSONObject
      System.out.println(HTTP.toJSONObject(headerText));
   }
}

산출

POST "http://www.tutorialspoint.com/" HTTP/1.1

{"Request-URI":"http://www.tutorialspoint.com/","Method":"POST","HTTP-Version":"HTTP/1.1"}

JSONArray는 순서가 지정된 값 시퀀스입니다. 인덱스로 값에 액세스하고 값을 입력하는 방법을 제공합니다. 다음 유형이 지원됩니다-

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • JSONObject.NULL 객체

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

public class JSONDemo {
   public static void main(String[] args) { 
      JSONArray list = new JSONArray();

      list.put("foo");
      list.put(new Integer(100));
      list.put(new Double(1000.21));
      list.put(new Boolean(true));
      list.put(JSONObject.NULL);

      System.out.println("JSONArray: ");
      System.out.println(list);
   }
}

산출

JSONArray: 
["foo",100,1000.21,true,null]

JSONML 클래스는 XML 텍스트를 JSONArray로 또는 그 반대로 변환하는 정적 메서드를 제공합니다.

다음 방법은 예제에서 다룹니다.

  • toJSONArray(String) − XML을 JSONArray 객체로 변환합니다.

  • toJSONObject(String) − XML을 JSONObject 객체로 변환합니다.

  • toString(JSONArray) − JSONArray 객체에서 XML을 제공합니다.

  • toString(JSONObject) − JSONObject 객체에서 XML을 제공합니다.

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

public class JSONDemo {
   public static void main(String[] args) {
      JSONArray list = new JSONArray();
      list.put("name");
      list.put("Robert");     

      System.out.println("XML from a JSONArray: ");
      String xml = JSONML.toString(list);
      System.out.println(xml);

      System.out.println("JSONArray from a XML: ");
      list = JSONML.toJSONArray(xml);
      System.out.println(list);

      System.out.println("JSONObject from a XML: ");
      JSONObject object = JSONML.toJSONObject(xml);
      System.out.println(object);

      System.out.println("XML from a JSONObject: ");
      xml = JSONML.toString(object);
      System.out.println(xml);
   }
}

산출

XML from a JSONArray: 
<name>Robert</name>
JSONArray from a XML: 
["name","Robert"]
JSONObject from a XML: 
{"childNodes":["Robert"],"tagName":"name"}
XML from a JSONObject: 
<name>Robert</name>

JSONObject 클래스는 키-값 쌍의 정렬되지 않은 컬렉션입니다. 키로 값에 액세스하고 값을 입력하는 방법을 제공합니다. 다음 유형이 지원됩니다-

  • Boolean

  • JSONArray

  • JSONObject

  • Number

  • String

  • JSONObject.NULL 객체

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

public class JSONDemo {
   public static void main(String[] args) { 
      JSONObject jsonObject = new JSONObject();
      jsonObject.put("Name", "Robert");
      jsonObject.put("ID", 1);
      jsonObject.put("Fees", new Double(1000.21));
      jsonObject.put("Active", new Boolean(true));
      jsonObject.put("Other Details", JSONObject.NULL);

      JSONArray list = new JSONArray();
      list.put("foo");
      list.put(new Integer(100));
      jsonObject.put("list",list);
      System.out.println(jsonObject);
   }
}

산출

{"Active":true,"Other Details":null,"ID":1,"Fees":1000.21,"list":["foo",100],"Name":"Robert"}

JSONStringer는 JSON 구문 규칙을 확인하는 JSON 텍스트를 빠르게 빌드하는 유틸리티 클래스입니다. JSONStringer의 각 인스턴스는 하나의 JSON 텍스트를 생성 할 수 있습니다.

import org.json.JSONStringer;

public class JSONDemo {
   public static void main(String[] args) { 
      String jsonText = new JSONStringer()
         .object()
         .key("Name")
         .value("Robert")                            
         .endObject()                       
         .toString();
      System.out.println(jsonText);

      jsonText = new JSONStringer()
         .array()
         .value("Robert")      
         .value("Julia")      
         .value("Dan")
         .endArray()                       
         .toString();
      System.out.println(jsonText);

      jsonText = new JSONStringer()
         .array()
         .value("Robert")      
         .value("Julia")      
         .value("Dan")
         .object()
         .key("Name")
         .value("Robert")                            
         .endObject()  
         .endArray()             
         .toString();
      System.out.println(jsonText);
   }
}

산출

{"Name":"Robert"}
["Robert","Julia","Dan"]
["Robert","Julia","Dan",{"Name":"Robert"}]

속성 클래스는 속성 텍스트를 JSONObject로 또는 그 반대로 변환하는 정적 메서드를 제공합니다.

다음 방법은 예제에서 다룹니다.

  • toJSONObject(Properties) − 속성 데이터를 JSONObject Object로 변환합니다.

  • toProperties(JSONObject) − JSONObject를 속성 객체로 변환합니다.

import java.util.Properties;
import org.json.JSONObject;
import org.json.Property;

public class JSONDemo {
   public static void main(String[] args) {
      Properties properties = new Properties();
      properties.put("title", "This is a title text");
      properties.put("subtitle", "This is a subtitle text");

      System.out.println("Properties to JSON");
      JSONObject jsonObject = Property.toJSONObject(properties);
      System.out.println(jsonObject);

      System.out.println("JSON to properties");
      System.out.println(Property.toProperties(jsonObject));
   }
}

산출

Properties to JSON
{"subtitle":"This is a subtitle text","title":"This is a title text"}
JSON to properties
{subtitle = This is a subtitle text, title = This is a title text}

XML 클래스는 XML 텍스트를 JSONObject로 또는 그 반대로 변환하는 정적 메서드를 제공합니다.

다음 방법은 예제에서 다룹니다.

  • toJSONObject(String) − XML을 JSONArray 객체로 변환합니다.

  • toString(JSONObject) − JSONObject 객체에서 XML을 제공합니다.

import org.json.JSONObject;
import org.json.XML;

public class JSONDemo {
   public static void main(String[] args) { 
      JSONObject jsonObject = new JSONObject();
      jsonObject.put("Name", "Robert");
      jsonObject.put("ID", 1);
      jsonObject.put("Fees", new Double(1000.21));
      jsonObject.put("Active", new Boolean(true));
      jsonObject.put("Details", JSONObject.NULL);

      //Convert a JSONObject to XML
      String xmlText = XML.toString(jsonObject);
      System.out.println(xmlText);

      //Convert an XML to JSONObject
      System.out.println(XML.toJSONObject(xmlText));
   }
}

산출

<Active>true</Active><Details>null</Details><ID>1</ID><Fees>1000.21</Fees><Name>Robert</Name>
{"Active":true,"Details":null,"ID":1,"Fees":1000.21,"Name":"Robert"}

org.json의 유틸리티 클래스는 잘못된 JSON의 경우 JSONException을 발생시킵니다. 다음 예제는 JSONException을 처리하는 방법을 보여줍니다.

import org.json.JSONException;
import org.json.XML;

public class JSONDemo {
   public static void main(String[] args) {
      try{
         //XML tag name should not have space.
         String xmlText = "<Other Details>null</Other Details>";
         System.out.println(xmlText);

         //Convert an XML to JSONObject
         System.out.println(XML.toJSONObject(xmlText));
      } catch(JSONException e){   
         System.out.println(e.getMessage());
      }
   }
}

산출

position: 24
Unexpected token RIGHT BRACE(}) at position 24.