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.