JSON (JavaScript Object Notation) - це легкий формат, який використовується для обміну даними. Він заснований на підмножині мови JavaScript (спосіб побудови об’єктів у JavaScript). Як зазначено в MDN , деякі JavaScript не є JSON, а деякі JSON - не JavaScript.
Прикладом того, де це використовується, є відповіді веб-служб. У старі часи веб-сервіси використовували XML як основний формат даних для передачі назад даних, але оскільки з'явився JSON ( формат JSON визначений в RFC 4627 Дугласом Крокфордом ), він був кращим форматом, оскільки це набагато більше легкий
Дізнатися більше можна на офіційному веб-сайті JSON .
JSON побудований на двох конструкціях:
- Колекція пар імен / значень. У різних мовах це реалізується як об'єкт, запис, структура, словник, хеш-таблиця, список клавіш або асоціативний масив.
- Впорядкований список значень. У більшості мов це реалізується як масив, вектор, список чи послідовність.
Структура JSON
Ось приклад даних JSON:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
JSON в JavaScript
JSON (у Javascript) - рядок!
Люди часто припускають, що всі об'єкти Javascript - JSON, а JSON - це об'єкт Javascript. Це неправильно.
У Javascript var x = {x:y}
- не JSON , це об’єкт Javascript . Два - не одне і те ж. Еквівалент JSON (представлений мовою Javascript) був би var x = '{"x":"y"}'
. x
- це об'єкт рядка типу, а не сам об'єкт. Щоб перетворити це на повноцінний об'єкт Javascript, ви повинні спочатку його розібрати var x = JSON.parse('{"x":"y"}');
, x
тепер це об’єкт, але це вже не JSON.
Дивіться об’єкт Javascript Vs JSON
Під час роботи з JSON та JavaScript ви можете спокуситись використовувати eval
функцію для оцінки результату, повернутого у зворотному дзвінку, але це не рекомендується, оскільки в JSON є два символи (U + 2028 та U + 2029), але не в JavaScript (детальніше про це читайте тут ).
Тому завжди потрібно намагатися використовувати сценарій Крокфорда, який перевіряє чинність JSON, перш ніж його оцінювати. Посилання на пояснення сценарію можна знайти тут, і ось пряме посилання на файл js. Кожен великий браузер на сьогодні має власну реалізацію для цього.
Приклад того, як використовувати парсер JSON (з json з наведеного вище фрагмента коду):
//The callback function that will be executed once data is received from the server
var callback = function (result) {
var johnny = JSON.parse(result);
//Now, the variable 'johnny' is an object that contains all of the properties
//from the above code snippet (the json example)
alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};
Аналізатор JSON також пропонує ще один дуже корисний метод, stringify
. Цей метод приймає об’єкт JavaScript як параметр і виводить назад рядок у форматі JSON. Це корисно, коли ви хочете повернути дані назад на сервер:
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}
Зазначені вище методи ( parse
і stringify
) також приймають другий параметр, який є функцією, яка буде викликана для кожного ключа і значення на кожному рівні кінцевого результату, і кожне значення буде замінено результатом введеної вами функції. (Детальніше про це тут )
До речі, для всіх вас, хто думає, що JSON - це лише JavaScript, перегляньте цю публікацію, яка пояснює та підтверджує інше.
Список літератури