Что такое JSON? Это формат обмена данными, основанный на языке программирования JavaScript. В нем можно сохранять числа, строки, массивы. JSON легко кодируется и обрабатывается.
На что обратить внимание? Чаще всего используется в веб-приложениях, например, при передаче данных от сервера к клиенту. Ранее использовался XML, но уже с начала 2000-х годов его вытеснил JSON.
В статье рассказывается:
- Что такое JSON
- Структура JSON
- Принципы работы JSON
- Пример формата JSON
- Преобразования в JSON
- Часто задаваемые вопросы о JSON
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Что такое JSON
Кратко — это формат обмена данными, основанный на JavaScript (JS). Чуть подробнее, то это стандартный текстовый формат для представления структурированных данных на основе элементарного синтаксиса объекта JS. Таким методом можно хранить и передавать:
- строки;
- массивы;
- числа;
- практически любые объекты.
Соглашения из JSON (JavaScript Object Notation) настолько популярны, что и другие языки также сталкиваются с этим стандартом.
У этого формата есть несколько преимуществ перед конкурентами, а именно:
- компактность файла JSON;
- простое чтение написанных предложений, что облегчает работу и программисту, и машине;
- простота процесса преобразования в структуры данных для разнообразных языков программирования;
- совместимость со многими языками программирования, благодаря наличию у тех функций и библиотек, которые помогут создавать и читать структуры JSON.
Все завязано на особенном способе определения объектов и массивов. Этот процесс походит на создание массивов ассоциативного типа в других языках программирования.
Работа с JSON не всегда может быть осуществлена, но все же достаточно разнообразных сфер и задач, где такой способ представления структурированных данных очень актуален.
Его эксплуатируют в таких случаях, как
- создание приложений на JS, когда в работе задействованы расширения браузеров и веб-странички;
- сериализирование или передача информации по сети, если она была выстроена по особенной структуре;
- возникновение потребности в обмене информацией между серверами и веб-утилитами;
- написание web-сервисов и API для предоставления доступа к общим данным пользователю ПК.
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Скачивайте и используйте уже сегодня:
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
JSON формат используется во время работы с анимацией в браузерах. Еще в таком виде информационные данные отправляются на сервера от интернет-обозревателей через передачу строчки в этом формате, а также в виде параметра запросов POST или GET.
Нужно быть внимательнее, ведь упомянутый в конце пример не пользуется широкой популярностью. Более активно прибегают к использованию запросов AJAX для упрощения записи-первоисточника.
Структура JSON
Если разбирать детально, то этот формат содержит следующие типы данных:
Строка
Она является первой среди JSON данных и включает в себя символы Unicode с экранированием обратной косой чертой (\).
Читайте также!
Выглядит это вот так:
{ «name» : «Jones» }
Число
Оно полностью соответствует формату JavaScript с плавающей запятой двойной точности.
В качестве примера можно упомянуть следующее:
{
«number_1» : 210,
«number_2» : 215,
«number_3» : 21.05,
«number_4» : 10.05
}
Логическое выражение
Оно может представляться истинным и ложным значением. Нужно помнить, что в кавычки логические выражения не заключаются, а вписываются именно как строковые значения.
Пример этого для наглядности:
{ «AllowPartialShipment» : false }
Нуль
Это пустое значение. Следует запомнить, что при ситуации, когда ключу не присваивается какой-либо показатель, он рассматривается как нуль.
Для примера:
{ «Special Instructions» : null }
Объект
JSON объект — определенный набор пар имен или значений. Они заключены между фигурными скобками {}. При этом ключи являются уникальными строками, которые разделяются запятой.
В качестве примера представлено следующее:
{
«Influencer» : { «name» : «Jaxon» , «age» : «42» , «city» , «New York» }
}
Массив
Это некая упорядоченная коллекция значений. В JSON его значения должны относиться к одному из перечисленных типов, а именно: строка, число, объект, массив, логическое выражение или нуль.
Скачать файлИтак, наглядный пример:
{
«Influencers» : [
{
«name» : «Jaxon»,
«age» : 42,
«Works At» : «Tech News»
}
{
«name» : «Miller»,
«age» : 35
«Works At» : «IT Day»
}
]
}
Принципы работы JSON
Расскажем о них и опишем примерную структуру того, как происходит обработка данных, если зафиксировано обращение «клиент—сервер—клиент». Такой принцип задействуется в случае передачи данных с сервера в браузер по запросу пользователя. К слову, это и есть главное предназначение JSON.
- Запрос на сервер поступает сразу же после одного клика от человека за монитором. Для этого пользователю нужно захотеть открыть и прочесть элемент описания чего-либо, например.
- Сам запрос генерируется при помощи AJAX с использованием JavaScript и программного сценарного файла PHP. Если сценарий запускается на сервере, то поиск данных будет выполнен наверняка.
- Программный файл PHP производит процесс запоминания всей информации с сервера, формируя строку кода.
- JavaScript фиксирует её, восстанавливает до нужного состояния и демонстрирует все нужные человеку данные на страничке экрана, что и требовалось.
Весь описанный процесс происходит за доли секунды. Все благодаря JavaScript, встроенному в браузер. Если JS не работает или вообще отсутствует, то процесс не произойдет, результата не будет.
Пример формата JSON
Обычно данные сохраняют в файле с таким же расширением. Для наглядного примера можно создать прямо сейчас файл employee.JSON с атрибутами сотрудника (ключи и значения).
{
«name»: «Aleix Melon»,
«id»: «E00245»,
«role»: [«Dev», «DBA»],
«age»: 23,
«doj»: «11-12-2019»,
«married»: false,
«address»: {
«street»: «32, Laham St.»,
«city»: «Innsbruck»,
«country»: «Austria»
},
«referred-by»: «E0012»
}
на курсы от GeekBrains до 29 декабря
Итак, теперь в этом примере нужно дать расшифровку всем упомянутым атрибутам:
- name— это имя сотрудника. Значение в строковом формате (String). При написании возводится в двойные кавычки;
- id— это уникальный идентификатор сотрудника. Он также указывается в формате отдельной строки;
- role— это роли, закрепленные за сотрудниками в организации. Количество ролей не ограничено строго, а значит можно и нужно перечислить такие данные в формате массива (Array);
- age— это возраст сотрудника на данный момент, указанный в числовом значении (Number);
- doj — это дата, когда работник был принят в штат. Так как перед нами именно дата, то она добавляется в удвоенных кавычках и обрабатывается как строка;
- married— информация о том, какое семейное положение у сотрудника (замужем/женат/ не замужем/не женат). В качестве ответа на вопрос может быть прописано да/нет (иначе true или false), а потому это логический формат (Boolean);
- address— адресные данные сотрудника. Информация может включать в себя несколько ответов (частей): улица, город, страна, индекс и так далее. Это лучше представить в виде объекта (Object с парами «ключ—значение»);
- referred-by— идентификатор сотрудника, порекомендовавшего этого человека на должность в компанию. Если работник заступил на службу именно по рекомендации, то атрибут будет иметь весомое значение. В любой другой ситуации поле следует не заполнять информацией, то есть null.
Затем необходимо создать определенный набор данных по сотрудникам в формате JSON. При добавлении сразу нескольких записей о разных людях нужно прописывать информацию о них в квадратных скобках […].
[
{
«name»: «Masha Gorina»,
«id»: «E01458»,
«role»: [«Dev», «DBA»],
«age»: 32,
«doj»: «04-07-2020»,
«married»: false,
«address»: {
«street»: «48, Jump St.»,
«city»: «Wattens»,
«country»: «Austria»
},
«referred-by»: «E0012»
},
{
«name»: «Pol Garadas»,
«id»: «E96785»,
«role»: [«HR»],
«age»: 51,
«doj»: «17-01-2011»,
«married»: true,
«address»: {
«street»: «45, Rose Lane.»,
«city»: «Alexandria»,
«country»: «USA»
},
«referred-by»: null
}
]
Преобразования в JSON
Получая «сырую» строку кода, человеку нужно преобразовать её в объект своими силами. Если нужно отправить экземпляр класса JavaScript по сети, то следует преобразовать его в JSON (строку) перед пересылкой. Об этих двух проблемах наслышаны в веб-разработке, а потому встроенный объект JSON доступен в браузерах, которые содержат следующие два метода:
- parse(): принимает строку JSON в качестве параметра и возвращает соответствующий экземпляр класса JavaScript.
- stringify(): принимает объект в качестве параметра и возвращает эквивалентную строковую JSON строку.
Наглядно первый метод в работе можно рассмотреть на примере heroes-finished-JSON-parse.html (смотри исходный код) — это то же самое, что и в примере, созданном до этого, за исключением того, что установлен XHR для возврата сырого JSON текста, затем используется parse() для преобразования его в фактический объект JavaScript. Ключевой фрагмент кода располагается тут:
request.open(«GET», requestURL);
request.responseType = «text»; // now we’re getting a string!
request.send();
request.onload = function () {
var superHeroesText = request.response; // get the string from the response
var superHeroes = JSON.parse(superHeroesText); // convert it to an object
populateHeader(superHeroes);
showHeroes(superHeroes);
};
Абсолютно ясно, что stringify() работает обратным путем. Для демонстрации работы придется набрать в консоль JavaScript браузера друг за другом строки:
var myJSON = { name: «Chris», age: «38» };
myJSON;
var myString = JSON.stringify(myJSON);
myString;
Итак, создается объект JavaScript, затем проверяется его содержание, а потом он преобразовывается в строку JSON при помощи stringify(). При этом сохраняется возвращаемое значение в новой переменной. Завершается все еще одной проверкой.
Часто задаваемые вопросы о JSON
Идентичны ли объекты JS и JSON?
Эти сущности не являются чем-то идентичным. Формат данных JSON создавался на базе объектной структуры JavaScript. Это первое и последнее сходство.
Объекты в JavaScript:
- имеют методы;
- допускается добавление ключей без кавычек;
- разрешены комментарии;
- являются отдельными сущностями.
Что такое «Unexpected token u in JSON at position 1»?
Понятно, что при обработке может появиться ошибка JSON, это не что-то необычное. Если так случилось, то нужно проверить на корректность все данные. Бывает, что даже один символ все рушит. В процессе проверки на правильность можно пользоваться JSON Linter.
Читайте также!
Какие языки программирования поддерживаются JSON?
Было задумано так, что он является подмножеством языков JavaScript. Сейчас же практически каждый язык программирования поддерживает JSON из-за его независимого от языка формата данных. На официальном сайте можно найти перечень его главных библиотек, которые доступны на различных языках программирования. Их допустимо использовать для анализа и генерации JSON.