Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

JSON

В настоящее время в качестве формата данных в интернете широко используются две технологии: XML и JSON. В какой-то степени они являются конкурентами, хотя и созданы для разных задач. Мы рассмотрим только формат JSON.

JSON – это:

  • формат обмена данными;
  • средство кодирования объектов JavaScript в виде строк;
  • можно использовать только текстовые и числовые значения. Двоичные значения явно не допускается. JSON не имеет эквивалента CDATA;
  • более экономичный, чем XML, формат с точки зрения размера данных, но за счет читабельности;
  • JSON — всегда UTF-8 без Byte Order Mark (BOM)
  • Стандарт не предусматривает комментариев (в моих примерах они даны только для наглядности)

Структуру данных в JSON можно можно представить как комбинацию:

  • JSON-объектов: { string : value , .... } (фигурные скобки). Представлен как JSONObject
  • JSON-массивов: [ value , value .....] (квадратные скобки). Представлен как JSONArray
  • значений: string || number || object || array || true || false, || null. Представлены как JSONStringer и др.

JSON часто используется в Ajax-приложениях при обмене данных с веб-сервером. Предположим, что приложение должно запросить нужные данные кота Барсика. Приложение должно возвратить в браузер больше чем один элемент данных. Как же их упаковать? Можно просто получить от сервера код JavaScript и работать непосредственно с ним. Вот пример ответа на запрос (http://yourserver/app/searchcontact?Barsik) от гипотетического приложения для кота по имени Barsik. Строковое представление объекта JavaScript и является строкой JSON:

{"catname":"Barsik","age":"5"},{"catname":"Murzik", "lastname":"Ivanov","age":"9"}

Объекты JSON

Объекты JSON имеют формат пар ключ:значение. Элементы объекта разделены запятыми, и каждый объект заключён в фигурные скобки {}.

Ключи можно создавать в любом порядке, JSON-объект — это неупорядоченное множество пар «ключ:значение».

JSON


{   // Начало объекта
	"catname":"Барсик",
	"age": 7
}   // Конец объекта

Значения могут быть в основном строками (тогда ставим кавычки) или числами (без кавычек). В сложных примерах доступны дополнительные варианты (объекты, массивы и т.д.), тоже без кавычек.

Массивы JSON

Массив начинается с [ (открывающей квадратной скобки) и заканчивается ] (закрывающей квадратной скобкой). Значения разделены , (запятой).

JSON

В массивах нет ключей, как в объекте, поэтому обращаться к массиву можно только по номеру элемента. Соответственно, данные внутри массива нельзя менять - это упорядоченное множество значений.


// Строки
[   // Начало массива
    "Барсик", "Мурзик"
]   // Конец массива

// Числа
[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

// Смешанные данные
[ 1, "Мурзик", 27 ]

Значение может быть строкой в двойных кавычках, числом, true, false, null, объектом или массивом. Эти структуры могут быть вложенными.

JSON

Дополнительные материалы

toddmotto/public-apis: A collective list of public JSON APIs for use in web development. - список сайтов с публичными JSON API.

На странице JSON Test by jsontest можно проверять работу с JSON через интернет.

На странице JSONLint - The JSON Validator можно проверять валидность JSON.

JSON Editor Online - view, edit and format JSON online - тоже удобный сервис для просмотра JSON-ответов

JSON Formatter & Validator - ещё один удобный сервис для просмотра JSON, позволяющий сворачивать и разворачивать узлы.

JSONPlaceholder - Fake online REST API for developers - сервер для тестирования REST API

jsonschema2pojo - генерация Java-классов из JSON.

Пример работы в Android.

Реклама