Синтаксис JSON

JSON хранит данные в объектах и массивах. Синтаксис JSON отражает как они определяются.

Объекты JSON

Объект JSON — это неупорядоченный набор пар имя/значение, вставленных между фигурных скобок { }.

В следующем примере artistname — это имя, а Deep Purple — его значение.

{ "artistname" : "Deep Purple" }

Объект может содержать ноль или больше пар имя/значение. Несколько пар разделяются запятыми. Вот корректные объекты.

{ }

{ "artistname" : "Deep Purple" }

{ 
  "artistname" : "Deep Purple", 
  "formed" : "1968" 
}

{
  "artistname" : "Deep Purple", 
  "formed" : "1968",
  "origin" : "Хертфорд, Великобритания"
}

В JSON имя — это строка. Его значением может быть объект, массив, число, строка, true, false или null.

В приведённых выше примерах значения являются строками.

Массивы JSON

Массив JSON — это упорядоченный набор значений, который позволяет хранить список значений. Массив начинается с левой квадратной скобки [ и завершается правой квадратной скобкой ]. Его значения разделяются запятой.

Вот пример массива исполнителей.

{
  "artists" : [
    { 
      "artistname" : "Deep Purple",
      "formed" : "1968"
    },
    { 
      "artistname" : "Joe Satriani",
      "born" : "1956" 
    },
    { 
      "artistname" : "Maroon 5",
      "formed" : "1994" 
    }
  ]
}

Пробелы

Вы можете использовать пробелы, чтобы сделать ваши JSON-документы более читабельными. Фактически это согласуется с большинством (если не всеми) языками программирования.

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

{
  "artists" : [
    { "artistname" : "Deep Purple", "formed" : "1968" },
    { "artistname" : "Joe Satriani", "born" : "1956" },
    { "artistname" : "Maroon 5", "formed" : "1994" }
  ]
}

Или так.

{
  "artists" : [
    { 
      "artistname" : "Deep Purple",
      "formed" : "1968"
    },
    { 
      "artistname" : "Joe Satriani",
      "born" : "1956" 
    },
    { 
      "artistname" : "Maroon 5",
      "formed" : "1994" 
    }
  ]
}

Эти два примера содержат одни и те же данные и простое добавление пробелов на данные никак не влияет.

Однако, если в строке добавить пробел внутри двойных кавычек, то это изменит данные.

Вложенные данные

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

{
  "artists" : [
    {
      "artistname" : "Deep Purple",
      "formed" : "1968",
      "albums" : [
        {
          "albumname" : "Machine Head",
          "year" : "1972",
          "genre" : "Рок"
        },
        {
          "albumname" : "Stormbringer",
          "year" : "1974",
          "genre" : "Рок"
        }
      ]
    }
  ]
}

Чтобы расширить данный пример возьмём трёх исполнителей.

{
  "artists" : [
    {
      "artistname" : "Deep Purple",
      "formed" : "1968",
      "albums" : [
        {
          "albumname" : "Machine Head",
          "year" : "1972",
          "genre" : "Рок"
        },
        {
          "albumname" : "Stormbringer",
          "year" : "1974",
          "genre" : "Рок"
        }
      ]
    },
    {
      "artistname" : "Joe Satriani",
      "born" : "1956",
      "albums" : [
        {
          "albumname" : "Flying in a Blue Dream",
          "year" : "1989",
          "genre" : "Инструментальный рок"
        },
        {
          "albumname" : "The Extremist",
          "year" : "1992",
          "genre" : "Инструментальный рок"
        },
        {
          "albumname" : "Shockwave Supernova",
          "year" : "2015",
          "genre" : "Инструментальный рок"
        }
      ]
    },
    {
      "artistname" : "Snoop Dogg",
      "born" : "1971",
      "albums" : [
        {
          "albumname" : "Tha Doggfather",
          "year" : "1996",
          "genre" : "Гангста-рэп"
        },
        {
          "albumname" : "Snoopified",
          "year" : "2005",
          "genre" : "Гангста-рэп"
        }
      ]
    }
  ]
}
Автор: Йен Диксон
Последнее изменение: 27.02.2024