Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Введение в JSON

JSON — это текстовый формат обмена данными, пришедший из JavaScript, который используется в веб-сервисах и других связанных приложениях. В следующих разделах представлены введение в синтаксис, обзор использования и описание наиболее распространённых подходов для генерации и парсинга JSON.

Здесь рассматриваются следующие темы:

Синтаксис JSON

JSON определяет только две структуры данных: объекты и массивы. Объект — это набор пар имя-значение, а массив — это список значений. JSON определяет семь типов значений: строка, число, объект, массив, true, false и null.

В следующем примере показаны данные JSON для примера объекта, который содержит пары имя-значение. Значение для имени "phoneNumbers" является массивом, элементами которого являются два объекта.

{
   "firstName": "Duke",
   "lastName": "Java",
   "age": 18,
   "streetAddress": "100 Internet Dr",
   "city": "JavaTown",
   "state": "JA",
   "postalCode": "12345",
   "phoneNumbers": [
      { "Mobile": "111-111-1111" },
      { "Home": "222-222-2222" }
   ]
}

JSON имеет следующий синтаксис.

  • Объекты заключены в фигурные скобки ({}), их пары имя-значение разделены запятой (,), а имя и значение в паре разделены двоеточием (:). Имена в объекте являются строками, тогда как значения могут быть любого из семи типов значений, включая другой объект или массив.

  • Массивы заключены в квадратные скобки ([]), а их значения разделены запятой (,). Каждое значение в массиве может быть другого типа, включая другой массив или объект.

  • Когда объекты и массивы содержат другие объекты или массивы, данные имеют древовидную структуру.

Использование JSON

JSON часто используется в качестве общего формата для сериализации и десериализации данных в приложениях, которые взаимодействуют друг с другом через Интернет. Эти приложения создаются с использованием разных языков программирования и работают в самых разных средах. JSON подходит для этого сценария, потому что это открытый стандарт, его легко читать и писать, и он более компактен, чем другие представления.

RESTful веб-сервисы широко используют JSON в качестве формата данных внутри запросов и ответов. Заголовок HTTP, используемый для указания того, что содержимое запроса или ответа представляет собой данные JSON:

Content-Type: application/json

Представления JSON обычно более компактны, чем представления XML, потому что JSON не имеет закрывающих тегов. В отличие от XML, JSON не имеет общепринятой схемы для определения и проверки структуры данных JSON.

Генерация и парсинг JSON

Для генерации и парсинга данных JSON существуют две программные модели, которые аналогичны тем, что используются для документов XML.

  • Объектная модель создаёт дерево, которое представляет данные JSON в памяти. По дереву можно затем перемещаться, его можно анализировать или изменять. Этот подход является наиболее гибким и допускает обработку, которая требует доступа ко всему содержимому дерева. Однако это часто медленнее, чем потоковая модель, и требует больше памяти. Объектная модель генерирует вывод JSON путём одновременного перемещения по всему дереву.

  • Модель потоковой передачи использует анализатор на основе событий, который читает данные JSON по одному элементу за раз. Парсер генерирует события и останавливается для обработки, когда объект или массив начинается или заканчивается, когда он находит ключ или значение. Каждый элемент может быть обработан или отброшен кодом приложения, а затем анализатор переходит к следующему событию. Этот подход удобен для локальной обработки, при которой обработка текущего элемента не требует информации об остальных данных. Потоковая модель генерирует вывод JSON для данного потока, вызывая функцию с одним элементом за раз.

Существует множество генераторов и анализаторов JSON для разных языков программирования и сред. Обработка JSON в платформе Java EE описывает функциональные возможности, предоставляемые Java API для обработки JSON (JSR 374).


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)