org.json - Краткое руководство
org.json or JSON-Javaпредставляет собой простой набор инструментов для JSON на основе 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-команду в зависимости от операционной системы, над которой вы работаете.
Операционные системы | Задача | Команда |
---|---|---|
Windows | Открыть командную консоль | c: \> java -версия |
Linux | Открыть командный терминал | $ java -версия |
Mac | Открыть Терминал | машина: <joseph $ java -version |
Давайте проверим вывод для всех операционных систем -
Операционные системы | Вывод |
---|---|
Windows | версия 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) |
Mac | версия java "1.8.0_101" Среда выполнения Java (TM) SE (сборка 1.8.0_101) |
Если в вашей системе не установлена Java, загрузите Java Software Development Kit (SDK) по следующей ссылке www.oracle.com . Мы предполагаем, что Java 1.8.0_101 является установленной версией этого руководства.
Шаг 2: Установите среду JAVA
Установить JAVA_HOMEпеременная среды, указывающая на расположение базового каталога, в котором установлена Java на вашем компьютере. Например.
Операционные системы | Вывод |
---|---|
Windows | Установите для переменной среды JAVA_HOME значение C: \ Program Files \ Java \ jdk1.8.0_101 |
Linux | экспорт JAVA_HOME = / usr / local / java-current |
Mac | экспорт JAVA_HOME = / Библиотека / Java / Home |
Добавьте расположение компилятора Java в системный путь.
Операционные системы | Вывод |
---|---|
Windows | Добавить строку C:\Program Files\Java\jdk1.8.0_101\bin в конце системной переменной, Path. |
Linux | экспорт ПУТЬ = $ ПУТЬ: $ JAVA_HOME / bin / |
Mac | не требуется |
Проверьте установку Java с помощью команды java -version как объяснено выше.
Шаг 3. Загрузите архив org.json
Загрузите последнюю версию jar-файла org.json из org.json @ MVNRepository . На момент написания этого руководства мы загрузили json-20180813 и скопировали его в папку C: \> JSON.
Операционные системы | Имя архива |
---|---|
Windows | json-20180813.jar |
Linux | json-20180813.jar |
Mac | json-20180813.jar |
Шаг 4: Установите среду JSON_JAVA
Установить JSON_JAVAпеременная среды, указывающая на расположение базового каталога, в котором на вашем компьютере хранится jar-файл org.json. Предположим, мы сохранили json-20180813.jar в папке JSON.
Старший Нет | ОС и описание |
---|---|
1 | Windows Установите для переменной среды JSON_JAVA значение C: \ JSON |
2 | Linux экспорт JSON_JAVA = / usr / local / JSON |
3 | Mac экспорт JSON_JAVA = / Библиотека / JSON |
Шаг 5: установите переменную CLASSPATH
Установить CLASSPATH переменная среды, указывающая на расположение jar-файла JSON.simple.
Старший Нет | ОС и описание |
---|---|
1 | Windows Установите для переменной среды CLASSPATH значение% CLASSPATH%;% JSON_JAVA% \ json-20180813.jar;.; |
2 | Linux экспорт CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-20180813.jar :. |
3 | Mac экспорт 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 предоставляет статические методы для преобразования текста 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 предоставляет статические методы для преобразования текста заголовка веб-браузера в объект 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) - Предоставляет XML из объекта JSONArray.
toString(JSONObject) - Предоставляет XML из объекта JSONObject.
пример
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 может создавать один текст 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) - Предоставляет XML из объекта JSONObject.
пример
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 выдают исключение JSONException в случае недопустимого JSON. В следующем примере показано, как обрабатывать исключение 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.