Что такое нотация объектов JSON JavaScript

12 set 2022 5 min di lettura
Что такое нотация объектов JSON JavaScript
Indice dei contenuti

Введение

JSON — сокращение от JavaScript Object Notation — это формат для обмена данными. Как следует из названия, JSON происходит от языка программирования JavaScript, но доступен для использования на многих языках, включая Python, Ruby, PHP и Java. JSON обычно произносится как имя «Джейсон».

JSON использует расширение .json. При определении в другом формате файла (например, в .html ) он может отображаться внутри кавычек как строка JSON или может быть объектом, назначенным переменной. Этот формат легко передавать между веб-сервером и клиентом или браузером.

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

Синтаксис и структура

Объект JSON — это формат данных «ключ-значение», который обычно отображается в фигурных скобках. При работе с JSON вы, скорее всего, увидите объекты JSON в файле .json, но они также могут существовать как объект JSON или строка в контексте программы.

Объект JSON выглядит следующим образом:

{
 "first_name": "Noviello",
 "last_name": "Shark",
 "location": "Ocean",
 "online": true,
 "followers": 987
 }

Хотя это очень короткий пример и JSON может состоять из нескольких строк, это демонстрирует, что формат обычно задается двумя фигурными скобками { } на обоих концах и парами ключ-значение. Большая часть данных, используемых в JSON, в конечном итоге инкапсулируется в объект JSON.

Между парами ключ-значение есть двоеточие, как в "key": "value". Каждая пара "ключ-значение" отделяется запятой, поэтому центр JSON обычно выглядит так: "key": "value", "key": "value", "key": "value". В нашем примере выше первая пара ключ-значение — это "first_name": "NoviellO".

Ключи JSON расположены слева от двоеточия. Они должны быть заключены в двойные кавычки, как в "key", и могут быть любой допустимой строкой. Внутри каждого объекта ключи должны быть уникальными. Эти ключевые строки могут включать пробелы, как в "first name", но это может затруднить доступ при программировании, поэтому лучше использовать символы подчеркивания, как в "first_name".

Значения JSON расположены справа от двоеточия. Это должен быть один из 6 простых типов данных:

  • струны
  • числа
  • объекты
  • множество
  • Булевы значения (истина или ложь)
  • ничтожный

На более широком уровне значения также могут состоять из сложных типов данных объектов или массивов JSON, которые описаны в следующих параграфах.

Каждый из типов данных, передаваемых как значения в JSON, сохранит свой синтаксис, поэтому строки будут в кавычках, а числа — нет.

Хотя в файлах .json мы обычно видим расширенный многострочный формат, JSON также может быть записан в одну строку.

{ "first_name": "Noviello", "last_name": "Shark", "online": true, }

Это было бы более распространено в другом типе файла или при обнаружении строки JSON.

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

{
 "first_name": "Noviello",
 "last_name": "Shark",
 "online": true
 }

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

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

Работа со сложными типами в JSON

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

Вложенные объекты

В следующем файле users.json для каждого из четырех пользователей ( "noviello", "jesse", "drew", "jamie" ) имеется вложенный объект JSON, передаваемый в качестве значения для каждого из пользователей, со своими собственными вложенные ключи "username" и "location", относящиеся к каждому пользователю. Первый вложенный объект JSON выделен ниже.

{
 "noviello": {
 "username": "NovielloShark",
 "location": "Indian Ocean",
 "online": true,
 "followers": 987
 },
 "jesse": {
 "username": "JesseOctopus",
 "location": "Pacific Ocean",
 "online": false,
 "followers": 432
 },
 "drew": {
 "username": "DrewSquid",
 "location": "Atlantic Ocean",
 "online": false,
 "followers": 321
 },
 "jamie": {
 "username": "JamieMantisShrimp",
 "location": "Pacific Ocean",
 "online": true,
 "followers": 654
 }
 }
пользователи.json

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

Вложенные массивы

Данные также могут быть вложены в формате JSON с использованием массивов JavaScript, которые передаются как значение. JavaScript использует квадратные скобки [ ] на обоих концах своего типа массива. Массивы собираются, сортируются и могут содержать значения разных типов данных.

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

С выделенным первым вложенным массивом профиль пользователя для Noviello может выглядеть так:

{
 "first_name": "Noviello",
 "last_name": "Shark",
 "location": "Ocean",
 "websites": [
 {
 "description": "work",
 "URL": "https://noviello.it/"
 },
 {
 "desciption": "tutorials",
 "URL": "https://noviello.it/community/tutorials"
 }
 ],
 "social_media": [
 {
 "description": "twitter",
 "link": "https://twitter.com/noviello"
 },
 {
 "description": "facebook",
 "link": "https://www.facebook.com/Noviello"
 },
 {
 "description": "github",
 "link": "https://github.com/noviello"
 }
 ]
 }
user_profile.json

Ключ "websites" и ключ "social_media" используют массив для вложения информации, принадлежащей 2 ссылкам на веб-сайт Noviello и 3 ссылкам на профиль в социальных сетях. Мы знаем, что это массивы из-за использования квадратных скобок.

Использование вложенности в нашем формате JSON позволяет нам работать с более сложными и иерархическими данными.

Сравнение с XML

XML, или расширяемый язык разметки, — это способ хранения доступных данных, которые могут быть прочитаны как людьми, так и машинами. Формат XML доступен для использования во многих языках программирования.

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

Мы увидим пример формата XML, а затем рассмотрим те же данные, представленные в JSON.

<users>
 <user>
 <username>NovielloShark</username> <location>Indian Ocean</location>
 </user>
 <user>
 <username>JesseOctopus</username> <location>Pacific Ocean</location>
 </user>
 <user>
 <username>DrewSquir</username> <location>Atlantic Ocean</location>
 </user>
 <user>
 <username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
 </user>
 </users>
пользователи.xml
{"users": [
 {"username": "NovielloShark", "location": "Indian Ocean"},
 {"username": "JesseOctopus", "location": "Pacific Ocean"},
 {"username": "DrewSquid", "location": "Atlantic Ocean"},
 {"username": "JamieMantisShrimp", "location": "Pacific Ocean"}
 ] }
пользователи.json

Мы видим, что JSON намного компактнее и не требует конечного тега, в отличие от XML. Кроме того, XML не использует массив, как в этом примере JSON.

Если вы знакомы с HTML, вы заметите, что XML очень похож на использование тегов. Хотя JSON компактнее и менее подробен, чем XML, и быстрее используется во многих ситуациях, включая приложения AJAX, вам нужно понять тип проекта, над которым вы работаете, прежде чем решать, какие структуры данных использовать.

Ресурсы

JSON является естественным форматом для использования в JavaScript и имеет множество реализаций, доступных для использования во многих популярных языках программирования. Вы можете увидеть полную языковую поддержку на сайте « Презентация JSON », а библиотека jQuery также может позаботиться о совместимости и синтаксическом анализе.

В большинстве случаев вы не будете писать чистый JSON, а будете извлекать его из источников данных или преобразовывать в JSON другие файлы данных. Вы можете преобразовать CSV или данные с разделителями табуляции, которые вы можете найти в программах для работы с электронными таблицами, в JSON. Вы можете конвертировать XML в JSON и наоборот. При использовании автоматизированных инструментов необходимо проверять результаты и при необходимости удалять избыточность.

При переводе других типов данных в JSON или создании собственного вы можете проверить JSON с помощью JSONLint и протестировать свой JSON в контексте веб-разработки с помощью JSFiddle.

Вывод

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.