- org.json 教程
- org.json - 首页
- org.json - 概述
- org.json - 环境设置
- CSV 示例
- org.json - CDL
- Cookie 示例
- org.json - Cookie
- org.json - CookieList
- HTTP 头部示例
- org.json - HTTP
- JSON 示例
- org.json - JSONArray
- org.json - JSONML
- org.json - JSONObject
- org.json - JSONStringer
- 属性示例
- org.json - 属性
- XML 示例
- org.json - XML
- 异常处理
- org.json - JSONException 处理
- org.json 有用资源
- org.json 快速指南
- org.json - 有用资源
- org.json - 讨论
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) |
我们假设本教程的读者在其系统上安装了 Java SDK 版本 11.0.11。
如果您没有 Java SDK,请从 www.oracle.com/technetwork/java/javase/downloads/index.html 下载其当前版本并安装。
步骤 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.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 \"https://tutorialspoint.com/\" HTTP/1.1"; //Case 2: Converts Header String to JSONObject System.out.println(HTTP.toJSONObject(headerText)); } }
输出
POST "https://tutorialspoint.com/" HTTP/1.1 {"Request-URI":"https://tutorialspoint.com/","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]