JavaScript с нуля - [51]

Шрифт
Интервал

"city": "Herrera, Inc., Seattle",

"state": "Washington",

"country": "US",

"country_iso3166": "US",

"latitude": "47.616558",

"longitude": "-122.341240",

"elevation": "121 ft"

},

"estimated": {},

"station_id": "KWASEATT187",

"observation_time": "Last Updated on August 28, 9:28 PM PDT",

"observation_time_rfc822": "Fri, 28 Aug 2015 21:28:12 -0700",

"observation_epoch": "1440822492",

"local_time_rfc822": "Fri, 28 Aug 2015 21:28:45 -0700",

"local_epoch": "1440822525",

"local_tz_short": "PDT",

"local_tz_long": "America/Los_Angeles",

"local_tz_offset": "-0700",

"weather": "Overcast",

"temperature_string": "68.0 F (20.0 C)",

"temp_f": 68.0,

"temp_c": 20.0,

"relative_humidity": "71 %",

"wind_string": "Calm",

"wind_dir": "NNW",

"wind_degrees": 331,

"wind_mph": 0.0,

"wind_gust_mph": "10.0",

"wind_kph": 0,

"wind_gust_kph": "16.1",

"pressure_mb": "1008",

"pressure_in": "29.78",

"pressure_trend": "-",

"dewpoint_string": "58 F (15 C)",

"dewpoint_f": 58,

"dewpoint_c": 15,

"heat_index_string": "NA",

"heat_index_f": "NA",

"heat_index_c": "NA",

"windchill_string": "NA",

"windchill_f": "NA",

"windchill_c": "NA",

"feelslike_string": "68.0 F (20.0 C)",

"feelslike_f": "68.0",

"feelslike_c": "20.0",

"visibility_mi": "10.0",

"visibility_km": "16.1",

"solarradiation": "-",

"UV": "0",

"precip_1hr_string": "0.00 in (0 mm)",

"precip_1hr_in": "0.00",

"precip_1hr_metric": " 0",

"precip_today_string": "0.00 in (0 mm)",

"precip_today_in": "0.00",

"precip_today_metric": "0",

"icon": "cloudy",

"icon_url": "http://icons.wxug.com/i/c/k/nt_cloudy.gif",

"nowcast": ""

}

}

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

Объект JSON изнутри

Объект JSON — не более чем комбинация имен свойств и их значений. Звучит очень просто, но есть в этом важные детали, которые мы рассмотрим в текущем разделе.

Имена свойств

Имена свойств являются идентификаторами, которые вы будете использовать для обращения к значению. Располагаются они слева от двоеточия:

{

"firstName": "Kirupa",

"lastName": "Chinnathambi",

"special": {

"admin": true,

"userID": 203

},

"devices": [

{

"type": "laptop",

"model": "Macbook Pro 2015"

},

{

"type": "phone",

"model": "iPhone 6"

}

]

}

В этом фрагменте JSON имена свойств — это firstName, lastName, special, admin, userID, devices, type и model. Обратите внимание на то, как они определены, то есть представлены в виде строчных значений, заключенных в кавычки. Кавычки — это важная деталь, которую вам не требуется использовать для имен свойств в случае с объектными литералами. Поэтому имейте их в виду, когда будете работать в мире JSON.

Значения

Каждое имя свойства отображается в значение. Сами же значения могут иметь следующие типы:

• числа;

• строки;

• логические типы (true или false);

• объекты;

• массивы;

• Null.

Давайте сопоставим эти типы с примером, который видели недавно.

Строки

Ниже выделены именно строчные значения:

{

"firstName": "Kirupa",

"lastName": "Chinnathambi",

"special": {

"admin": true,

"userID": 203

},

"devices": [

{

"type": "laptop",

"model": "Macbook Pro"

{

},

"type": "phone",

"model": "iPhone XS"

}

]

}

Двойные кавычки являются убедительным признаком того, что представленные значения — это строки. Помимо привычных букв, чисел и символов можно включать в них экранирующие символы вроде \', \", \\, \/ и т. д., чтобы определять те знаки строки, которые в противном случае будут считаны как операция JSON.

Числа

В нашем примере представлен единственный член семейства чисел — это значение свойства 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",


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.