Поиск по сайту:

Введение в JSON


Введение

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

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

Понимание синтаксиса и структуры

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

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

Вот пример объекта JSON:

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

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

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

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

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

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

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

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

С файлами .json вы обычно получаете формат, расширенный на несколько строк, но JSON также может быть записан в одну строку, как в следующем примере:

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

Это чаще встречается в файлах другого типа или при встрече со строкой JSON.

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

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

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

JSON может становиться все более сложным с иерархиями, состоящими из вложенных объектов и массивов. Далее вы узнаете больше об этих сложных структурах.

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

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

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

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

{ 
  "sammy" : {
    "username"  : "SammyShark",
    "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 с помощью массивов JavaScript, которые передаются как значение. JavaScript использует квадратные скобки [ ] на обоих концах своего типа массива. Массивы представляют собой упорядоченные коллекции и могут содержать значения разных типов данных.

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

С первым вложенным массивом профиль пользователя для Sammy может быть представлен следующим образом:

{ 
  "first_name" : "Sammy",
  "last_name" : "Shark",
  "location" : "Ocean",
  "websites" : [
    {
      "description" : "work",
      "URL" : "https://linux-console.net/"
    },
    {
      "desciption" : "tutorials",
      "URL" : "https://linux-console.net/community/tutorials"
    }
  ],
  "social_media" : [
    {
      "description" : "twitter",
      "link" : "https://twitter.com/digitalocean"
    },
    {
      "description" : "facebook",
      "link" : "https://www.facebook.com/DigitalOceanCloudHosting"
    },
    {
      "description" : "github",
      "link" : "https://github.com/digitalocean"
    }
  ]
}

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

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

Сравнение JSON с XML

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

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

Вот пример формата XML:

<users>
    <user>
        <username>SammyShark</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>

Теперь сравните те же данные, представленные в JSON:

{"users": [
  {"username" : "SammyShark", "location" : "Indian Ocean"},
  {"username" : "JesseOctopus", "location" : "Pacific Ocean"},
  {"username" : "DrewSquid", "location" : "Atlantic Ocean"},
  {"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }

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

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

Заключение

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

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

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