Выбрать главу

Числа

В нашем примере представлен единственный член семейства чисел — это значение свойства userID:

{

"firstName": "Kirupa",

"lastName": "Chinnathambi",

"special": {

"admin": true,

"userID": 203

},

"devices": [

{

"type": "laptop",

"model": "Macbook Pro"

},

{

"type": "phone",

"model": "iPhone XS"

}

]

}

Вы можете указывать как десятичные значения (например 0.204, 1200.23, 45), так и экспоненциальные (2e16, 3e+4, 1.5e-2). При этом нужно помнить о том, что нельзя использовать префикс, начинающийся с нуля, сопровождаемого числом. Например, значение 03.14 недопустимо.

Логический тип

Логические значения весьма просты:

{

"firstName": "Kirupa",

"lastName": "Chinnathambi",

"special": {

"admin": true,

"userID": 203

},

"devices": [

{

"type": "laptop",

"model": "Macbook Pro"

},

{

"type": "phone",

"model": "iPhone XS"

}

]

}

Эти значения могут быть либо true, либо false. Здесь важно помнить, что регистр важен. Оба упомянутых значения должны использоваться в нижнем регистре. Печать в режиме предложения (True или False) либо использование только верхнего регистра (TRUE или FALSE) запрещено.

Объекты

А вот тут ситуация немного интереснее:

{

"firstName": "Kirupa",

"lastName": "Chinnathambi",

"special": {

"admin": true,

"userID": 203

},

"devices": [

{

"type": "laptop",

"model": "Macbook Pro"

},

{

"type": "phone",

"model": "iPhone XS"

}

]

}

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

Массивы

Наше свойство devices представляет массив:

{

"firstName": "Kirupa",

"lastName": "Chinnathambi",

"special": {

"admin": true,

"userID": 203

},

"devices": [

{

"type": "laptop",

"model": "Macbook Pro"

},

{

"type": "phone",

"model": "iPhone XS"

}

]

}

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

Null

Последний тип данных самый унылый:

{

"foo": null

}

Ваши значения JSON могут быть null, что означает пустое значение.

Чтение данных JSON

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

Как бы то ни было, практически всегда ваше взаимодействие с JSON будет связано с чтением данных. Когда дело доходит до чтения данных JSON, главное помнить, что это очень похоже на чтение значений, хранящихся в типичном объекте JavaScript. Вы можете либо обратиться к необходимому значению через точку (property.propertyFoo), либо использовать для этого подход массива (property["propertyFoo"]).

Следующий пример продемонстрирует это:

let exampleJSON = {

"firstName": "Kirupa",

"lastName": "Chinnathambi",

"special": {

"admin": true,

"userID": 203

},

"devices": [

{

"type": "laptop",

"model": "Macbook Pro"

},

{

"type": "phone",

"model": "iPhone XS"

}

]

};

Чтобы считать значение, хранящееся в firstName, вы можете сделать одно из следующего:

exampleJSON.firstName;

exampleJSON["firstName"];

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

Аналогично тому, что вы видели ранее, для обращения к значению, хранящемуся в lastName, вы можете сделать следующее:

exampleJSON.lastName;