Введение в JSON

Вступление

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" : "Sammy",
  "last_name" : "Shark",
  "location" : "Ocean",
  "online" : true,
  "followers" : 987
}

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

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

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

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

  • строки

  • чисел

  • объекты

  • массивы

  • Booleans (true или false)

  • null

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

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

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

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

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

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

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

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

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

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

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

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

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

users.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 может выглядеть так:

user_profile.json

{
  "first_name" : "Sammy",
  "last_name" : "Shark",
  "location" : "Ocean",
  "websites" : [
    {
      "description" : "work",
      "URL" : "https://www.digitalocean.com/"
    },
    {
      "desciption" : "tutorials",
      "URL" : "https://www.digitalocean.com/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" используют массив для вложения информации, принадлежащей 2 ссылкам на веб-сайт Сэмми и 3 ссылкам на профили в социальных сетях. Мы знаем, что это массивы из-за использования квадратных скобок.

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

Сравнение с XML

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

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

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

users.xml


    
        SammyShark Indian Ocean
    
    
        JesseOctopus Pacific Ocean
    
    
        DrewSquir Atlantic Ocean
    
    
        JamieMantisShrimp Pacific Ocean
    

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 является естественным форматом для использования в JavaScript и имеет много реализаций, доступных для использования во многих популярных языках программирования. Вы можете увидеть полную языковую поддержку на сайте «http://www.json.org/[Introduction JSON]», аjQuery library также может позаботиться о совместимости и синтаксическом анализе.

В большинстве случаев вы не будете писать чистый JSON, но будете извлекать его из источников данных или конвертировать другие файлы данных в JSON. Вы можете преобразовать CSV или данные с разделителями табуляции, которые вы можете найти в программах для работы с электронными таблицами, в JSON с помощью инструмента с открытым исходным кодомMr. Data Converter. Вы можете конвертировать XML в JSON и наоборот с лицензией Creative Commonsutilities-online.info site. При использовании автоматизированных инструментов вы должны проверить свои результаты и при необходимости удалить избыточность.

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

Заключение

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

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

Related