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" : "Гангста-рэп"
}
]
}
]
}