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 −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:\> java -version |
Linux | コマンドターミナルを開く | $ java -version |
マック | オープンターミナル | マシン:<joseph $ java -version |
すべてのオペレーティングシステムの出力を確認しましょう-
OS | 出力 |
---|---|
ウィンドウズ | Javaバージョン「1.8.0_101」 Java(TM)SEランタイム環境(ビルド1.8.0_101) |
Linux | Javaバージョン「1.8.0_101」 Java(TM)SEランタイム環境(ビルド1.8.0_101) |
マック | Javaバージョン「1.8.0_101」 Java(TM)SEランタイム環境(ビルド1.8.0_101) |
システムにJavaがインストールされていない場合は、次のリンクwww.oracle.comからJavaソフトウェア開発キット(SDK)をダウンロードしてください。このチュートリアルのインストールバージョンとして、Java1.8.0_101を想定しています。
ステップ2:JAVA環境を設定する
をセットする JAVA_HOMEJavaがマシンにインストールされているベースディレクトリの場所を指す環境変数。例えば。
OS | 出力 |
---|---|
ウィンドウズ | 環境変数JAVA_HOMEをC:\ Program Files \ Java \ jdk1.8.0_101に設定します |
Linux | export JAVA_HOME = / usr / local / java-current |
マック | export JAVA_HOME = / Library / Java / Home |
Javaコンパイラの場所をシステムパスに追加します。
OS | 出力 |
---|---|
ウィンドウズ | 文字列を追加します C:\Program Files\Java\jdk1.8.0_101\bin システム変数の最後に、 Path。 |
Linux | export PATH = $ PATH:$ JAVA_HOME / bin / |
マック | 必要ありません |
コマンドを使用してJavaのインストールを確認します java -version 上で説明したように。
ステップ3:org.jsonアーカイブをダウンロードする
org.json @MVNRepositoryからorg.jsonjarファイルの最新バージョンをダウンロードします。このチュートリアルの執筆時点で、json-20180813をダウンロードし、C:\> JSONフォルダーにコピーしました。
OS | アーカイブ名 |
---|---|
ウィンドウズ | json-20180813.jar |
Linux | json-20180813.jar |
マック | json-20180813.jar |
ステップ4:JSON_JAVA環境を設定する
をセットする JSON_JAVAorg.jsonjarがマシンに保存されているベースディレクトリの場所を指す環境変数。json-20180813.jarをJSONフォルダーに保存したとしましょう。
シニア番号 | OSと説明 |
---|---|
1 | Windows 環境変数JSON_JAVAをC:\ JSONに設定します |
2 | Linux JSON_JAVA = / usr / local / JSONをエクスポートします |
3 | Mac JSON_JAVA = / Library / JSONをエクスポートします |
ステップ5:CLASSPATH変数を設定する
をセットする CLASSPATH JSON.simplejarの場所を指す環境変数。
シニア番号 | OSと説明 |
---|---|
1 | Windows 環境変数CLASSPATHを%CLASSPATH%;%JSON_JAVA%\ json-20180813.jar;。;に設定します。 |
2 | Linux export CLASSPATH = $ CLASSPATH:$ JSON_JAVA /json-20180813.jar:。 |
3 | Mac export 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クラスは、WebブラウザのCookieテキストをJSONObjectに、またはその逆に変換する静的メソッドを提供します。
この例では、次の方法について説明します。
toJSONObject(String) −CookieテキストをJSONObjectオブジェクトに変換します。
toString(JSONObject) −JSONObjectをCookieテキストに変換します。
例
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クラスは、CookieリストをJSONObjectに、またはその逆に変換する静的メソッドを提供します。Cookieリストは、名前と値のペアのシーケンスです。
この例では、次の方法について説明します。
toJSONObject(String) −CookieリストテキストをJSONObjectオブジェクトに変換します。
toString(JSONObject) −JSONObjectをCookieリストテキストに変換します。
例
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クラスは、Webブラウザのヘッダーテキストを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の各インスタンスは、1つの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オブジェクトに変換します。
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.