Org Json 简明教程
org.json - Overview
org.json or JSON-Java 是一个简单的基于 Java 的 JSON 工具包。你可以使用 org.json 来编码或解码 JSON 数据。
Features
-
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.11 compatible − 源代码和二进制文件与 Java 1.6-1.11 兼容
org.json - Environment Setup
本章带你完成在基于 Windows 和 Linux 的系统上设置 Org.Json 的过程。遵循一些简单的步骤,无需任何复杂的设置过程,即可轻松安装 Org.Json 并将其与当前 Java 环境集成。安装时需要用户管理。
System Requirements
JDK |
Java SE 2 JDK 1.5 或更高版本 |
Memory |
1 GB RAM (recommended) |
Disk Space |
No minimum requirement |
Operating System Version |
Windows XP 或更高版本、Linux |
让我们继续进行安装 Org.Json 的步骤。
Step 1: Verify your Java Installation
首先,你的系统中需要安装 Java 软件开发工具包 (SDK)。要验证这一点,请根据所使用的平台执行以下两个命令。
如果 Java 安装已正确完成,则它将显示 Java 安装的当前版本和规范。以下表中给出了一个示例输出。
Platform |
Command |
Sample Output |
Windows |
打开命令控制台并输入 - >java –version |
java version "11.0.11" 2021-04-20 LTSJava™ SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)Java HotSpot™ 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 LTSOpen 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) |
-
我们假设本教程的读者已在他们的系统中安装了 Java SDK 版本 11.0.11。
-
如果您没有 Java SDK,请从 www.oracle.com/technetwork/java/javase/downloads/index.html 下载其当前版本并将其安装。
Step 2: Set your Java Environment
设置环境变量 JAVA_HOME 以指向计算机上安装 Java 的基本目录位置。例如,
Sr.No. |
Platform & Description |
1 |
Windows Set JAVA_HOME to C:\ProgramFiles\java\jdk11.0.11 |
2 |
Linux Export JAVA_HOME = /usr/local/java-current |
将 Java 编译器位置的完整路径附加到系统路径。
Sr.No. |
Platform & Description |
1 |
Windows 将字符串“C:\Program Files\Java\jdk11.0.11\bin”附加到系统变量 PATH 的末尾。 |
2 |
Linux Export PATH = $PATH:$JAVA_HOME/bin/ |
如上所述,从命令提示符执行命令 java -version 。
Step 3: Install Org.Json Library
从 org.json @ MVNRepository 下载最新版本的 org.json jar 文件。在编写本教程时,我们已下载 json-20211205,并将其复制到 C:\>JSON 文件夹中。
OS |
Archive name |
Windows |
json-20180813.jar |
Linux |
json-20180813.jar |
Mac |
json-20180813.jar |
Step 4: Set JSON_JAVA Environment
设置 JSON_JAVA 环境变量以指向 org.json jar 存储在你机器上的基本目录位置。我们假设我们已将 json-20211205.jar 存储在 JSON 文件夹中。
Sr.No |
OS & Description |
1 |
Windows 将环境变量 JSON_JAVA 设置为 C:\JSON |
2 |
Linux export JSON_JAVA = /usr/local/JSON |
3 |
Mac export JSON_JAVA = /Library/JSON |
Step 5: Set CLASSPATH Variable
将 CLASSPATH 环境变量设置为指向 JSON.simple jar 所在位置。
Sr.No |
OS & Description |
1 |
Windows 将环境变量 CLASSPATH 设置为 %CLASSPATH%;%JSON_JAVA%\json-20211205.jar;.; |
2 |
Linux export CLASSPATH = $CLASSPATH:$JSON_JAVA/json-20211205.jar:. |
3 |
Mac export 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 对象。
Example
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));
}
}
org.json - Cookie
Cookie 类提供了将 Web 浏览器的 cookie 文本转换为 JSONObject,反之亦然,的静态方法。
以下方法在示例中介绍。
-
toJSONObject(String) − 将 cookie 文本转换为 JSONObject 对象。
-
toString(JSONObject) − 将一个 JSONObject 转换为一个 Cookie 文本。
Example
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));
}
}
org.json - CookieList
CookieList 类提供静态方法将 Cookie 列表转换为 JSONObject,反之亦然。Cookie 列表是由名称/值对序列构成的。
以下方法在示例中介绍。
-
toJSONObject(String) − 将 Cookie 列表文本转换为 JSONObject 对象。
-
toString(JSONObject) − 将 JSONObject 转换为 Cookie 列表文本。
Example
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));
}
}
org.json - HTTP
HTTP 类提供静态方法,用于将 Web 浏览器的头部文本转换为一个 JSONObject,反之亦然。
以下方法在示例中介绍。
-
toJSONObject(String) − 将头部文本转换为一个 JSONObject 对象。
-
toString(JSONObject) − 将一个 JSONObject 转换为头部文本。
Example
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));
}
}
org.json - JSONArray
JSONArray 是一个有序的值序列。它提供按索引访问值和放置值的方法。支持以下类型 −
-
Boolean
-
JSONArray
-
JSONObject
-
Number
-
String
-
JSONObject.NULL object
Example
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);
}
}
org.json - JSONML
JSONML 类提供静态方法,用于将 XML 文本转换为一个 JSONArray,反之亦然。
以下方法在示例中介绍。
-
toJSONArray(String) − 将 XML 转换为一个 JSONArray 对象。
-
toJSONObject(String) − 将 XML 转换为一个 JSONObject 对象。
-
toString(JSONArray) − 从一个 JSONArray 对象中提供 XML。
-
toString(JSONObject) − 从一个 JSONObject 对象中提供 XML。
Example
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);
}
}
org.json - JSONObject
JSONObject 类是无序的键值对集合。它提供以键访问值和放入值的方法。支持以下类型:
-
Boolean
-
JSONArray
-
JSONObject
-
Number
-
String
-
JSONObject.NULL object
Example
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);
}
}
org.json - JSONStringer
JSONStringer 是一个快速建立 JSON 文本的实用类,符合 JSON 语法规则。JSONStringer 的每个实例可以生成一个 JSON 文本。
Example
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);
}
}
org.json - Property
Property 类提供静态方法以将属性文本转换到 JSONObject,反之亦然。
以下方法在示例中介绍。
-
toJSONObject(Properties) − 将属性数据转换为 JSONObject 对象。
-
toProperties(JSONObject) − 将 JSONObject 转换为属性对象。
Example
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));
}
}
org.json - XML
XML 类提供静态方法,用于将 XML 文本转换为一个 JSONObject,反之亦然。
以下方法在示例中介绍。
-
toJSONObject(String) − 将 XML 转换为一个 JSONArray 对象。
-
toString(JSONObject) − 从一个 JSONObject 对象中提供 XML。
Example
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));
}
}
org.json - JSONException Handling
org.json 的实用程序类在 JSON 无效的情况下会引发 JSONException。以下示例显示如何处理 JSONException。
Example
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());
}
}
}