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.