Изучаем Java EE 7 - [193]
Терминология | Описание |
---|---|
Число | Число в JSON очень похоже на таковое в Java, за исключением того, что в JSON не могут применяться восьмеричные и шестнадцатеричные значения |
Строка | Строка — это последовательность из нуля или более символов Unicode, ограниченная двойными кавычками, использующая для экранирования символ обратного слеша |
Значение | Значение в JSON может быть представлено в одном из следующих форматов: строка в двойных кавычках, число, двоичное значение, объект или массив |
Массив | Массив — это упорядоченный набор значений. Квадратные скобки ([,]) обозначают начало и конец массива. Значения массива разделены запятыми (,) и могут быть объектами |
Объект | JSON и Java имеют одинаковое определение объекта. В JSON объект — это неупорядоченный набор пар «имя/значение». Фигурные скобки ({,}) обозначают начало и конец объекта. Пары «имя/значение» в JSON разделяются запятыми (,) и представляют атрибуты POJO в Java |
Двоеточие в JSON используется в качестве разделителя имен, а запятая — в качестве разделителя значений. Корректные данные JSON представляют собой сериализованный объект или массив структур данных, которые могут быть вложенными. Например, объект JSON может содержать массив JSON. В примере, приведенном выше (см. листинг 12.14), content — это объект, который содержит массив order_line.
Обзор спецификаций JSON
JSON наследуется от объектных литералов JavaScript. JSON был представлен в качестве RFC 4627 в IETF (Internet Engineering Task Force — Инженерный совет Интернета) в 2006 году. IETF является открытым международным сообществом проектировщиков сетей, исследователей, операторов и продавцов, продвигающих эволюцию архитектуры Интернета.
Официальный тип содержимого JSON — application/json (см. главу 15 о веб-службах RESTful), а расширение имен файлов JSON —.json. Хотя JSON в настоящее время не является рекомендацией W3C, многие спецификации W3C и API прямо или косвенно основаны на JSON или используют этот формат, например JSON-LD, JSONPath, JSONT и JSONiq. Кроме того, большое количество языков программирования внедрили API для анализа и генерации данных в формате JSON.
Java имеет несколько реализаций для обработки, преобразования, сериализации/десериализации или генерации данных JSON, например JSON-Lib, fastjson, Flexjson, Jettison, Jackson и т. д. (посетите сайт http://json.org, на котором перечислены несколько Java API для работы с JSON); каждый из них полезен для разных сценариев.
Чтобы предоставить стандартный Java API для обработки JSON, JSR 353 (Java API для обработки JSON) был отправлен в JCP в 2011 году и был выпущен с Java EE 7.
JSON-P
Java API для обработки JSON (JSR 353), известный как JSON-P, — это спецификация, которая позволяет обрабатывать JSON в Java. Обработка включает в себя механизмы для анализа, создания, преобразования и запроса данных JSON. JSON-P представляет собой стандарт построения объектов Java с JSON с использованием API, похожего на DOM для XML. В то же время он обеспечивает механизм производства и потребления JSON с помощью потоков, аналогично StAX для XML.
Хотя это не является строгим требованием в оригинальном JSR, некоторые реализации JSON-P могут также обеспечить связывание данных JSON с объектами Java и наоборот (но это будет указано в будущем JSR, которое можно было бы назвать JSON-B, где B означает binding («связывание»)). В табл. 12.10 перечислены важные пакеты JSON-P.
Пакет | Описание |
---|---|
javax.json | Предоставляет API для описания структуры данных JSON (например, класс JsonArray для массива JSON и класс JsonObject для объекта JSON), предоставляет точку входа для анализа, построения, чтения и записи объектов и массивов JSON с помощью потоков |
javax.json.spi | Интерфейс провайдера служб (Service Provider Interface) служит для подключения реализаций JsonParser и JsonGenerator |
javax.json.stream | Предоставляет потоковый API для анализа и генерации JSON |
Пример реализации
Несколько обработчиков JSON реализовано в Java, открытый исходный код для реализации JSON-P (JSR 353) имеет JSON RI.
Обработка JSON
JSON-P предоставляет две различные модели программирования для обработки JSON-документов: API объектной модели, а также потоковый API. Как и в DOM API для XML, API объектной модели обеспечивает классы для модели JSON-объектов и массивов в древовидной структуре, которые представляют JSON-данные в памяти. Как и в случае DOM API, API объектной модели обеспечивает гибкую навигацию и запрашивает все дерево содержимого.
Потоковый API — это низкоуровневый API, предназначенный для эффективной обработки больших объемов данных JSON. Потоковый API очень похож на StAX API для XML. Это дает возможность потоку JSON не сохранять весь документ в памяти. Потоковый API предоставляет основанный на событиях анализатор потоковой модели, что позволяет пользователю обрабатывать или отменять события анализатора, а также запрашивать следующее событие (вытягивать его). Генератор JSON также поможет вам записать JSON с помощью потоков.
JSR 353 имеет основной API javax.json.Json, который представляет собой класс для создания объектов, обрабатывающих JSON. Этот центральный API имеет методы создания объектов типа JsonParser, JsonGenerator, JsonWriter, JsonReader, JsonArrayBuilder и JsonObjectBuilder.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.