- 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 - JSON异常处理
- 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 –版本 |
java 版本“11.0.11”2021-04-20 LTS Java(TM) SE 运行时环境 18.9(内部版本 11.0.11+9-LTS-194) Java HotSpot(TM) 64 位服务器 VM 18.9(内部版本 11.0.11+9-LTS-194,混合模式) |
| Linux | 打开命令终端并输入 - $java –版本 |
java 版本“11.0.11”2021-04-20 LTS 打开JDK运行时环境18.9(内部版本11.0.11+9-LTS-194) 打开JDK 64位服务器VM(内部版本11.0.11+9-LTS-194,混合模式) |
我们假设本教程的读者已在其系统上安装了 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:$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 |
| 苹果 | json-20180813.jar |
第四步:设置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 | 苹果 导出 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 | 苹果 导出 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 List 转换为 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", "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"}
org.json - JSONArray
JSONArray 是值的有序序列。它提供了通过索引访问值和放置值的方法。支持以下类型 -
布尔值
JSON数组
JSON对象
数字
细绳
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 类是键值对的无序集合。它提供了通过键访问值和放置值的方法。支持以下类型 -
布尔值
JSON数组
JSON对象
数字
细绳
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 - JSON异常处理
如果 JSON 无效,org.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]