Org.Json 快速指南



org.json - 概述

org.json 或 JSON-Java 是一個基於 Java 的簡單 JSON 工具包。您可以使用 org.json 編碼或解碼 JSON 資料。

功能

  • 規範相容 − JSON.simple 完全符合 JSON 規範 - RFC4627。

  • 輕量級 − 它只有很少的類,並提供必要的編碼/解碼和轉義 json 等功能。

  • XML 轉換 − 它提供 JSON 到 XML 和反之亦然的功能。

  • HTTP 頭部 − 支援 HTTP 頭部轉換為 JSON 以及反之。

  • Cookie − 提供將 Cookie 轉換為 JSON 以及反之的功能。

  • CDL − 提供將逗號分隔列表轉換為 JSON 以及反之的功能。

  • 無依賴項 − 無外部庫依賴項。可以獨立包含。

  • Java 1.6-1.11 相容 − 原始碼和二進位制檔案與 Java 1.6-1.11 相容

org.json - 環境設定

本章將引導您完成在 Windows 和 Linux 系統上設定 Org.Json 的過程。Org.Json 可以輕鬆安裝並與您當前的 Java 環境整合,只需幾個簡單的步驟,無需任何複雜的設定過程。安裝時需要使用者管理許可權。

系統需求

JDK Java SE 2 JDK 1.5 或更高版本
記憶體 1 GB RAM(推薦)
磁碟空間 無最低要求
作業系統版本 Windows XP 或更高版本,Linux

現在讓我們繼續執行安裝 Org.Json 的步驟。

步驟 1:驗證您的 Java 安裝

首先,您需要在系統上安裝 Java 軟體開發工具包 (SDK)。要驗證這一點,請根據您正在使用的平臺執行以下兩個命令之一。

如果 Java 安裝已正確完成,則它將顯示您 Java 安裝的當前版本和規範。下表給出了一個示例輸出。

平臺 命令 示例輸出
Windows

開啟命令控制檯並輸入 -

\>java –version

java version "11.0.11" 2021-04-20 LTS

Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)

Linux

開啟命令終端並輸入 -

$java –version

java version "11.0.11" 2021-04-20 LTS

Open JDK Runtime Environment 18.9 (build 11.0.11+9-LTS-194)

Open JDK 64-Bit Server VM (build 11.0.11+9-LTS-194, mixed mode)

步驟 2:設定您的 Java 環境

設定環境變數 JAVA_HOME 以指向 Java 安裝在您機器上的基本目錄位置。例如,

序號 平臺和描述
1

Windows

將 JAVA_HOME 設定為 C:\ProgramFiles\java\jdk11.0.11

2

Linux

匯出 JAVA_HOME = /usr/local/java-current

將 Java 編譯器位置的完整路徑追加到系統路徑。

序號 平臺和描述
1

Windows

將字串“C:\Program Files\Java\jdk11.0.11\bin”追加到系統變數 PATH 的末尾。

2

Linux

匯出 PATH = $PATH:$JAVA_HOME/bin/

從命令提示符執行命令 java -version,如上所述。

步驟 3:安裝 Org.Json 庫

org.json @ MVNRepository 下載最新版本的 org.json jar 檔案。在撰寫本教程時,我們已下載 json-20211205,並將其複製到 C:\>JSON 資料夾中。

作業系統 存檔名稱
Windows json-20180813.jar
Linux json-20180813.jar
Mac json-20180813.jar

步驟 4:設定 JSON_JAVA 環境

設定 JSON_JAVA 環境變數以指向 org.json jar 儲存在您機器上的基本目錄位置。假設我們將 json-20211205.jar 儲存在 JSON 資料夾中。

序號 作業系統和描述
1

Windows

將環境變數 JSON_JAVA 設定為 C:\JSON

2

Linux

匯出 JSON_JAVA = /usr/local/JSON

3

Mac

匯出 JSON_JAVA = /Library/JSON

步驟 5:設定 CLASSPATH 變數

設定 CLASSPATH 環境變數以指向 JSON.simple jar 的位置。

序號 作業系統和描述
1

Windows

將環境變數 CLASSPATH 設定為 %CLASSPATH%;%JSON_JAVA%\json-20211205.jar;.;

2

Linux

匯出 CLASSPATH = $CLASSPATH:$JSON_JAVA/json-20211205.jar:.

3

Mac

匯出 CLASSPATH = $CLASSPATH:$JSON_JAVA/json-20211205.jar:.

org.json - CDL

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"}]

org.json - Cookie

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=/

org.json - CookieList

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"}

org.json - HTTP

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", "https://tutorialspoint.tw/");
      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 \"https://tutorialspoint.tw/\" HTTP/1.1";
      //Case 2: Converts Header String to JSONObject
      System.out.println(HTTP.toJSONObject(headerText));
   }
}

輸出

POST "https://tutorialspoint.tw/" HTTP/1.1

{"Request-URI":"https://tutorialspoint.tw/","Method":"POST","HTTP-Version":"HTTP/1.1"}

org.json - JSONArray

JSONArray 是值的排序序列。它提供按索引訪問值和放置值的方法。支援以下型別 -

  • 布林值

  • JSONArray

  • JSONObject

  • 數字

  • 字串

  • 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]

org.json - JSONML

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>

org.json - JSONObject

JSONObject 類是鍵值對的無序集合。它提供按鍵訪問值和放置值的方法。支援以下型別 -

  • 布林值

  • JSONArray

  • JSONObject

  • 數字

  • 字串

  • 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"}

org.json - JSONStringer

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"}]

org.json - 屬性

Property 類提供靜態方法將屬性文字轉換為 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}

org.json - XML

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);

      //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 - JSONException 處理

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());
      }
   }
}

輸出

<Other Details>null</Other Details>
Misshaped close tag at 34 [character 35 line 1]
廣告

© . All rights reserved.