Хотя мы и привыкли чаще всего иметь дело с программами, которые пишутся для людей, это не всегда так. Некоторые программы вообще никак не соприкасаются с человеком, другие общаются и между собой и с человеком тоже.
В такой ситуации важно договориться не только о способе передачи данных,
таком как протокол http
, но и о том, как будут представлены данные, так
чтобы их могли читать программы, написанные на разных языках и выполняющиеся
в разных окружениях.
Одним из таких способов представления структурированных данных является json
.
JSON
JSON (JavaScript Object Notation) - простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером. Он основан на подмножестве языка программирования JavaScript.
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
},
{
"type": "mobile",
"number": "123 456-7890"
}
],
"children": [],
"spouse": null
}
Структура подозрительно смахивает на объекты, с которыми мы работаем в js. По большому счету это и есть текстовое представление наших объектов.
json
стал настолько популярным форматом, что в большом количестве языков
библиотека для преобразования в json
и обратно входит в стандартную поставку.
Можно даже сказать, что этот формат стандарт де-факто для обмена информацией
между сервисами в интернете. Его характеристики:
- Языко-независимый
- Текстовый
- Человеко-ориентированный
- Доступен везде
js так же имеет встроенные средства для трансляции в json
и обратно, причем
как в браузере, так и в nodejs
:
const obj = { key: 'value', keys: ['v1', 'v2'] };
const str = JSON.stringify(obj);
// {"key":"value","keys":["v1","v2"]}
JSON.parse(str);
// { key: 'value', keys: [ 'v1', 'v2' ] }
Media Type
При передаче контента по интернету мы должны явно специфицировать, какого типа
этот контент. Достигается это использованием заголовка content-type
.
А вот значение, которое можно туда подставить, не является произвольным.
Существует такое понятие, как media type
(раньше – MIME type
), которое представляет
из себя строковой идентификатор. Для json
он выглядит так: application/json
.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты