- Введение в JSON-Java (org.json)
- Дальнейшее чтение:
- Итерация по экземпляру org.json.JSONObject
- Escape JSON String в Java
- 2. Предварительно
- 3. JSON в Java [пакет org.json]
- 4. JSONObjectс
- 4.1. Создание JSON непосредственно изJSONObject
- 4.2. Создание JSON из карты
- 4.3. СозданиеJSONObject из JSONString
- 4.4. Сериализовать объект Java в JSON
- 5. JSONArrayс
- 5.1. СозданиеJSONArray
- 5.2. СозданиеJSONArray непосредственно из строки JSON
- 5.3. СозданиеJSONArray непосредственно из коллекции или массива
- 6. JSONTokener
- Java JSONObject Example
- 1. Putting values to JSONObject
- 2. Getting Values from JSONObject
- 3. toString() Method
- 4. accumulate() Method
- 5. append() Method
- 6. getNames() Method
- 7. opt() Method
Введение в JSON-Java (org.json)
JSON (аббревиатура от JavaScript Object Notation) — это облегченный формат обмена данными, он равенmost commonly used for client-server communication.. Его легко читать и писать, и он не зависит от языка. Значение JSON может быть другим JSONobject, array, number, string, boolean (истина / ложь) илиnull.
В этом руководстве мы увидим, как мы можем создавать, обрабатывать и анализировать JSON с помощью одной из доступных библиотек обработки JSON, т.е. библиотекаJSON-Java также известна какorg.json..
Дальнейшее чтение:
Итерация по экземпляру org.json.JSONObject
Узнайте, как перебирать и проходить через JSONObject
Escape JSON String в Java
Узнайте, как избежать использования ядра JSON String, Java или библиотеки
2. Предварительно
Прежде чем мы начнем, нам нужно добавить следующую зависимость в нашpom.xml:
Последнюю версию можно найти вMaven Central repository.
Обратите внимание, что этот пакет уже включен в Android SDK, поэтому мы не должны включать его при его использовании.
3. JSON в Java [пакет org.json]
БиблиотекаJSON-Java, также известная какorg.json (не путать сorg.json.simple от Google), предоставляет нам классы, которые используются для синтаксического анализа и управления JSON в Java.
Кроме того, эта библиотека может также конвертировать между JSON, XML, заголовками HTTP, файлами cookie, списком с разделителями-запятыми или текстом и т. Д.
В этом руководстве мы рассмотрим:
- JSONObject — похож на собственный объект типаMap в Java, который хранит неупорядоченные пары ключ-значение.
- JSONArray — упорядоченная последовательность значений, аналогичная встроенной в Java реализации Vector
- JSONTokener — инструмент, который разбивает фрагмент текста на последовательностьtokens, который может использоватьсяJSONObject илиJSONArray для анализа строк JSON
- CDL — инструмент, который предоставляет методы для преобразования текста с разделителями-запятыми вJSONArray и наоборот
- Cookie — конвертирует из JSONString в файлы cookie и наоборот
- HTTP — используется для преобразования из JSONString в заголовки HTTP и наоборот
- JSONException — это стандартное исключение, создаваемое этой библиотекой
4. JSONObjectс
JSONObject — это неупорядоченный набор пар ключ и значение, напоминающий собственные реализации JavaMap.
- Ключи являются уникальнымиStrings, которые не могут бытьnull
- Значения могут быть любыми: отBoolean,Number,String,JSONArray или даже от объектаJSONObject.NULL.
- JSONObject может быть представленString, заключенным в фигурные скобки с ключами и значениями, разделенными двоеточием, и парами, разделенными запятой.
- В нем есть несколько конструкторов, с помощью которых можно построитьJSONObject
Он также поддерживает следующие основные методы:
- get(String key) – gустанавливает объект, связанный с предоставленным ключом, выдаетJSONException, если ключ не найден
- opt(String key)- gустанавливает объект, связанный с предоставленным ключом, в противном случаеnull
- put(String key, Object value) – вставляет или заменяет пару ключ-значение в текущемJSONObject.
Методput() — это перегруженный метод, который принимает ключ типаString и несколько типов для значения.
Полный список методов, поддерживаемыхJSONObject,visit the official documentation.
Давайте теперь обсудим некоторые из основных операций, поддерживаемых этим классом.
4.1. Создание JSON непосредственно изJSONObject
JSONObject предоставляет API, похожий на интерфейс JavaMap.. Мы можем использовать методput() и указать ключ и значение в качестве аргумента:
JSONObject jo = new JSONObject(); jo.put("name", "jon doe"); jo.put("age", "22"); jo.put("city", "chicago");
Теперь нашJSONObject будет выглядеть так:
Существует семь различных перегруженных сигнатур методаJSONObject.put(). Хотя ключ может быть только уникальным, ненулевымString, значение может быть любым.
4.2. Создание JSON из карты
Вместо того, чтобы напрямую помещать ключ и значения вJSONObject, мы можем создать собственныйMap, а затем передать его в качестве аргумента конструкторуJSONObject.
Этот пример даст те же результаты, что и выше:
Map map = new HashMap<>(); map.put("name", "jon doe"); map.put("age", "22"); map.put("city", "chicago"); JSONObject jo = new JSONObject(map);
4.3. СозданиеJSONObject из JSONString
Чтобы разобрать JSONString наJSONObject, мы можем просто передатьString конструктору.
Этот пример даст те же результаты, что и выше:
JSONObject jo = new JSONObject( "" );
Переданный аргументString должен быть действительным JSON, иначе этот конструктор может выдатьJSONException.
4.4. Сериализовать объект Java в JSON
Один из конструкторовJSONObject’s принимает POJO в качестве аргумента. В приведенном ниже примере пакет использует геттеры из классаDemoBean и создает для него соответствующийJSONObject.
Чтобы получитьJSONObject из объекта Java, нам нужно использовать класс, который является допустимымJava Bean:
DemoBean demo = new DemoBean(); demo.setId(1); demo.setName("lorem ipsum"); demo.setActive(true); JSONObject jo = new JSONObject(demo);
JSONObject jo для этого примера будет:
Хотя у нас есть способ сериализации объекта Java в строку JSON, нет способа преобразовать его обратно с помощью этой библиотеки.
Если нам нужна такая гибкость, мы можем переключиться на другие библиотеки, такие какJackson.
5. JSONArrayс
JSONArray — это упорядоченный набор значений, напоминающий собственную реализацию JavaVector.
- Значения могут быть любыми: отNumber,String,Boolean,JSONArray,JSONObject или даже от объектаJSONObject.NULL.
- Он представленString в квадратных скобках и состоит из набора значений, разделенных запятыми.
- Как иJSONObject, у него есть конструктор, который принимает исходныйString и анализирует его для созданияJSONArray
Ниже приведены основные методы классаJSONArray:
- get(int index) – rустанавливает значение по указанному индексу (от 0 до общей длины — 1), в противном случае выдаетJSONException
- opt(int index) — возвращает значение, связанное с индексом (от 0 до общей длины — 1). Если в этом индексе нет значения, возвращаетсяnull
- put(Object value) — добавить значение объекта к этомуJSONArray. Этот метод перегружен и поддерживает широкий диапазон типов данных
Для получения полного списка методов, поддерживаемых JSONArray,visit the official documentation.
5.1. СозданиеJSONArray
После инициализации объекта JSONArray мы можем просто добавлять и извлекать элементы с помощью методовput() иget():
JSONArray ja = new JSONArray(); ja.put(Boolean.TRUE); ja.put("lorem ipsum"); JSONObject jo = new JSONObject(); jo.put("name", "jon doe"); jo.put("age", "22"); jo.put("city", "chicago"); ja.put(jo);
Ниже приводится содержимое нашегоJSONArray (код отформатирован для ясности):
5.2. СозданиеJSONArray непосредственно из строки JSON
Как иJSONObject,JSONArray также имеет конструктор, который создает объект Java непосредственно из JSONString:
JSONArray ja = new JSONArray("[true, \"lorem ipsum\", 215]");
Этот конструктор может выдатьJSONException, если источникString не является допустимым JSONString.
5.3. СозданиеJSONArray непосредственно из коллекции или массива
КонструкторJSONArray также поддерживает объекты коллекции и массива в качестве аргументов.
Мы просто передаем их в качестве аргумента конструктору, и он вернет объектJSONArray:
List list = new ArrayList<>(); list.add("California"); list.add("Texas"); list.add("Hawaii"); list.add("Alaska"); JSONArray ja = new JSONArray(list);
Теперь нашJSONArray состоит из:
["California","Texas","Hawaii","Alaska"]
6. JSONTokener
JSONTokener принимает источникString в качестве входных данных для своего конструктора и извлекает из него символы и токены. Он используется внутри классов этого пакета (например,JSONObject,JSONArray) для анализа JSONStrings..
Может быть не так много ситуаций, в которых мы будем напрямую использовать этот класс, поскольку ту же функциональность можно достичь с помощью других более простых методов (например,string.toCharArray()):
JSONTokener jt = new JSONTokener("lorem"); while(jt.more())
Теперь мы можем получить доступ кJSONTokener как к итератору, используя методmore(), чтобы проверить, есть ли какие-либо оставшиеся элементы, иnext() для доступа к следующему элементу.
Токены, полученные из предыдущего примера, будут:
Java JSONObject Example
On this page we will learn using org.json.JSONObject class. The org.json API handles the JSON operation in Java application.
1. The JSONObject is an unordered collection of name/value pairs.
2. The JSONObject produces output as JSON string.
3. In JSONObject , we put values using put method that accepts key/value parameters. Key is string but value can be any datatype, for example, boolean , Collection , Map , int etc.
4. The toString() method makes a JSON text of this JSONObject .
5. Instantiate JSONObject as following.
JSONObject jsonOb = new JSONObject();
Contents
1. Putting values to JSONObject
The put method accepts key/value pair. Key is string and value can be any datatype for example boolean , Collection , double , float , int , long , Map and Object .
Find the methods to put values.
JSONObject put(String key, boolean value) JSONObject put(String key, Collection value) JSONObject put(String key, double value) JSONObject put(String key, Map value)
JSONObject jsonOb = new JSONObject(); jsonOb.put("101", "Mahesh"); jsonOb.put("102", "Nilesh"); jsonOb.put("103", "Jugesh"); System.out.println(jsonOb);
JSONObject jsonOb = new JSONObject(); jsonOb.put("2", 4); jsonOb.put("3", 9); jsonOb.put("4", 16); System.out.println(jsonOb);
Map map1 = new HashMap<>(); map1.put(101, "Mohit"); map1.put(102, "Suresh"); map1.put(103, "Anand"); Map map2 = new HashMap<>(); map2.put(101, 25); map2.put(102, 20); map2.put(103, 30); JSONObject jsonOb = new JSONObject(); jsonOb.put("name", map1); jsonOb.put("age", map2); System.out.println(jsonOb);
2. Getting Values from JSONObject
The JSONObject has more methods to get the values, for example,
getInt(String key) returns int value.
getBoolean(String key) returns boolean value.
getDouble(String key) returns double value.
getString(String key) returns String value.
JSONObject jsonOb = new JSONObject(); jsonOb.put("101", "Mahesh"); jsonOb.put("102", "Nilesh"); jsonOb.put("103", "Jugesh"); String name = jsonOb.getString("102"); // Nilesh System.out.println(name);
3. toString() Method
String toString(int indentFactor)
Make a pretty-printed JSON text. The indentFactor is the number of spaces to add to each level of indentation.
JSONObject jsonOb = new JSONObject(); jsonOb.put("101", "Mahesh"); jsonOb.put("102", "Nilesh"); String jsonOutput = jsonOb.toString(2); System.out.println(jsonOutput);
4. accumulate() Method
JSONObject accumulate(String key, Object value)
The accumulate() method accumulates values under a key. It is similar to put() method but the difference is that, for accumulate() method, when the key is already present, the values are stored as JSONArray .
JSONObject jsonOb = new JSONObject(); jsonOb.put("101", "Mahesh"); jsonOb.accumulate("102", "Nilesh"); jsonOb.accumulate("102", "Jugesh"); System.out.println(jsonOb);
5. append() Method
JSONObject append(String key, Object value)
The append method appends values to the array under a key.
If key is not available, then key is put in JSONObject with its value being JSONArray .
If key is available with value as JSONArray , then given value is appended to this array.
JSONObject jsonOb = new JSONObject(); jsonOb.put("101", "Mahesh"); jsonOb.append("102", "Nilesh"); System.out.println(jsonOb); jsonOb.append("102", "Jugesh"); System.out.println(jsonOb);
6. getNames() Method
static String[] getNames(Object object)
public class JSONDemo < public static void main(String. args) < String[] ob = JSONObject.getNames(new Student()); for(String n: ob) < System.out.println(n); >> > class Student
7. opt() Method
The opt method gets an optional value associated with a key. It returns an object which is the value, or null if there is no value.
JSONObject jsonOb = new JSONObject(); jsonOb.put("101", "Mahesh"); jsonOb.put("102", "Nilesh"); String data = (String)jsonOb.opt("102"); System.out.println(data); // Nilesh data = (String)jsonOb.opt("103"); System.out.println(data); // null