Що таке JSON? Формат JSON: приклад і опис Формат передачі даних json

JSON або JavaScript Object Notation - це формат, який реалізує неструктурований текстове представлення структурованих даних, засноване на принципі пар ключ-значення і упорядкованих списках. Хоча JSON почав своє поширення з JavaScript, він підтримується в більшості мов, або спочатку, або за допомогою спеціальних бібліотек. Зазвичай Json використовується для обміну інформацією між веб-клієнтами і веб-сервером.

За останні 15 років JSON став формальним стандартом обміну данимиі використовується практично скрізь в інтернеті. Сьогодні він використовується практично всіма веб-серверами. До такої популярності привело ще й те, що багато баз даних підтримували JSON. Сучасні реляційні бази даних, такі як PostgreSQL і MySQL тепер підтримують зберігання і експорт даних в JSON. Бази даних, такі як MongoDB і Neo4j також підтримують JSON, хоча MongoDB використовує злегка модифіковану версію JSON. У цій статті ми розглянемо що таке JSON, його переваги над XML, його недоліки, а також коли його краще використовувати.

Щоб зрозуміти навіщо потрібен формат JSON і як він працює не обійтися без практики. Спочатку давайте розглянемо такий приклад:

{
"FirstName": "Jonathan",
"LastName": "Freeman",
"LoginCount": 4,
"IsWriter": true,
"WorksWith": [ "Spantree Technology Group", "InfoWorld"],
"Pets": [
{
"Name": "Lilly",
"Type": "Raccoon"
}
]
}

У цій структурі ми чітко визначили деякі атрибути людини. Спочатку ми визначили ім'я, прізвище, кількість авторизаций в системі, чи є ця людина письменником, список компаній, з якими він працює і список домашніх тварин. Така або схожа структура може бути передана з сервера в веб-браузер або мобільний додаток, яке вже може робити все що потрібно з цими даними, наприклад, відобразити їх або зберегти.

JSON - це загальний формат даних з мінімальною кількістю типів значень - рядки, числа, булеві значення (одиниця або нуль), списки, об'єкти і нуль. Незважаючи на те, що JSON є підмножиною JavaScript, такі типи даних є в більшості популярних мов програмування що робить JSON хорошим кандидатом для передачі даних між програмами, написаними на різних мовах.

Чому вам слід використовувати JSON?

Щоб зрозуміти корисність і важливість JSON нам потрібно трохи розібратися в історії інтерактивності в інтернет. На початку 2000 років інтерактивність роботи веб-сайтів почала змінюватися. У той час браузер служив тільки для відображення інформації, а всю роботу по підготовці контенту до відображення виконував веб-сервер. Коли користувач натискав кнопку в браузері, запит вирушав на сервер, де збиралася і відправлялася сторінка HTML, Готова для відображення. Такий механізм був повільним і неефективним. Це вимагало, щоб браузер повторно перемальовував всі на сторінці, навіть якщо змінилася невелика частина даних.

У той час передача тарифікація виконувалася за кількість переданих даних, тому розробники розуміли, що перезавантаження цілої сторінки обходиться дуже дорого і розглядали нові технології для поліпшення користувальницького інтерфейсу. Тоді можливість створення веб-запитів в фоновому режимі, Яка була додана в Internet Explorer 5 виявилася досить життєздатним підходом до поетапної завантаженні даних для відображення. Замість перезавантаження сторінки, натискання на кнопку просто виконає веб-запит, який буде працювати у фоновому режимі. Вміст буде оновлено, як тільки завантажиться. Їм можна управляти за допомогою JavaScript, універсальної мови програмування для браузерів.

Спочатку дані передавалися в форматі XML, Але він був складним для його використання в JavaScript. В JavaScript вже були об'єкти, які використовувалися для представлення даних в мові, тому Дуглас Крокфорд взяв синтаксис об'єктів JS і використовував його в якості специфікації нового формату обміну даними, який називався JSON. Цей формат було набагато простіше читати і розбирати в браузері на JavaScript. Незабаром розробники почали використовувати JSON замість XML.

Зараз швидкий обмін даними JSON є стандартом де-факто для передачі даних між сервером і клієнтом, мобільними додаткамиі навіть внутрішніми системними службами.

JSON проти XML

Як я говорив вище, основною альтернативою JSON був і є XML. Однак XML стає все менш поширеним в нових системах. І дуже легко зрозуміти чому. Нижче наведено приклад запису даних, які ви бачили вище в Json через XML:


Jonathan
Freeman
4
true

Spantree Technology Group
InfoWorld

Lilly
Raccoon


На додаток до надмірності коду, по суті запис даних зайняла в два рази більше місця, XML ще вводить деяку двозначність при аналізі структури даних. Перетворення XML в об'єкт JavaScriptможе зайняти від десятків до сотень рядків коду і вимагає тонкої настройки для кожного аналізованого об'єкта. Перетворення JSON в об'єкт JavaScript виконується в один рядок і не потребує будь-яких попередніх знань про аналізованому об'єкті.

обмеження JSON

Хоча JSON щодо стислий і гнучкий формат даних, з яким легко працювати на багатьох мовах програмування, у нього є деякі недоліки. Ось деякі обмеження:

  • Ні структури.З одного боку, це означає, що у вас є повна гнучкість для представлення даних будь-яким способом. З іншого, ви можете легко зберігати неструктуровані дані.
  • Тільки один тип чисел.підтримується формат з плаваючою комою і подвійною точністю IEEE-754. Це досить багато, але ви не можете використовувати ту різноманітність числових типів, що є в інших мовах.
  • Ні типу дати.розробники повинні використовувати рядкові уявлення дат, що може викликати невідповідність форматування. Або ж використовувати в якості дати кількість мілісекунд, що пройшли з початку епохи Unix (1 січня 1970).
  • Немає коментарів- ви не зможете робити анотації для полів, які вимагають цього прямо в коді.
  • подробиця- хоча JSON менш докладний, ніж XML, це не самий стислий формат обміну даними. Для високопродуктивних або спеціалізованих служб ви захочете використовувати більш ефективні формати.

Коли слід використовувати JSON?

Якщо ви розробляєте програмне забезпечення, Яке взаємодіє з браузером або нативним мобільним додатком, вам краще використовувати JSON. Використання XML вважається застарілим. Для зв'язку між серверами JSON може бути не дуже ефективним і краще використовувати інфраструктуру сериализации, схожу на Apache Avro або Apache Thrift. Навіть тут JSON - це не поганий вибір, і він може давати все що вам потрібно. Але немає точної відповіді що вибрати.

Якщо ви використовуєте бази даних MySQL, ваша програма буде в великій мірі залежати від того, що робиться в базі даних. У реляційних базах даних, які підтримують JSON вважається хорошим тоном використовувати його якомога менше. Реляційні бази даних були розроблені для даних певної схеми. Хоча більшість з них зараз підтримує формат даних JSON, продуктивність роботи з ним буде значно нижче.

висновки

JSON - це формат даних, націлений в першу чергу на відправку даних між веб-серверами і браузерами або мобільними додатками. Формат має простий дизайн і гнучкість, його легко читати і розуміти, а також легко працювати з такими даними в більшості мов програмування. Відсутність суворої схеми забезпечує гнучкість формату, але така гнучкість іноді ускладнює читання і розуміння даних.

Можливо, вам доведеться важко при роботі з JSON в строго типізованих мовах, таких як Scala або Elm, але широке поширення формату передбачає, що є утиліти і бібліотеки, які допоможуть навіть при вирішенні складних завдань. Тепер ви знаєте що таке json і як його використовувати.

ми випустили нову книгу«Контент-маркетинг в соціальних мережах: Як засісти в голову передплатників і закохати їх у свій бренд ».

JSON - це текстовий формат обміну даними, заснований на мультіпарадігменном мовою програмування. Його основне призначення полягає в зберіганні і передачі структурованого потоку інформації.

За допомогою простих правил формування конструкцій із символів в JavaScript, людина може забезпечити легкий і надійний спосібзберігання будь-якого виду інформації, будь то звичайне число, цілі рядки або величезна кількість різних об'єктів, виражених в простому тексті.

Крім цього, формат JSON використовується для об'єднання між собою об'єктів і структури даних у вигляді набору компонентів, формуючи тим самим програмні одиниці, що дозволяють зберігати і обробляти складні записи, що складаються з декількох змінних різного типу.

Після того як файл створений, що містяться в ньому рядки досить легко перенаправляти в інше положення Мережі через будь-які шляхи передачі даних. Це пов'язано з тим, що рядок являє собою звичайний текст.

Що значить JSON

Незважаючи на можливість використання практично у всіх скриптових мовах, його назва відноситься до JavaScript. Інструмент має такі переваги:

  1. Охоплює порівняно невеликий обсяг, компактний.
  2. Текстовий зміст може легко створюватися і піддаватися читання обчислювальною технікою і людиною.
  3. Можна без особливих зусиль перетворити в структуру практично для всіх видів формальних мов, що використовуються для створення комп'ютерних програм.
  4. Більшість мов програмування, будь то JavaScript, Ruby, Python або PHP, наділені функціями і спеціальними інструментами для читання і редагування файлу.

У переважній більшості випадків формат JSON використовується для роботи з передачі інформації від сервера до браузера. Цей процес, як правило, відбувається в «фоновому» режимі обміну браузера з web-сервером, а доставка здійснюється за допомогою AJAX. Це обумовлюється тим, що в процесі доставки даних відсутня необхідність перезавантажувати сторінку.

Працює це за наступним сценарієм:

  1. Наприклад, користувач клацає по картці товару в інтернет-магазині.
  2. JavaScript, вбудований в браузер, щоб зробити веб-сторінки більш функціональними, генерує запит за допомогою AJAX до програмного файлу сценарієм PHP, який запущений на сервері. Завдяки цьому відбувається передача ID обраного товару.
  3. Програмний файл сценарій PHP приймає найменування товару, опис, вартість та іншу інформацію, яка міститься в базі.
  4. Після цього формується рядок і передається браузеру.
  5. JavaScript приймає цей рядок, відновлює міститься в ній з її подання в закодованому вигляді, після чого виводить інформацію про обраний товар на веб-сторінку користувача.

Все це відбувається в лічені мілісекунди. Однак, якщо JavaScript відключений на комп'ютері з яких-небудь причин, веб-сторінка не завантажиться або буде відображатися з помилками.

Як влаштований формат JSON

У JSON типи даних підрозділяються на кілька категорій: прості і складні. До першого виду можна віднести, перш за все, текстові рядки і числа, до другого - об'єкти. В цілому виділяють шість основних типів:

  1. Числовий. При цьому числа можуть бути як беззнаковими цілими, так і цілими зі знаком. Зокрема, тут може міститися дрібна частина і уявлення дійсних чисел у вигляді дробової частини логарифма і порядку. Файл однаково дозволяє використання цілих чисел і поділ з плаваючою комою. Цей спосіб застосовується в JavaScript для всіх числових значень без винятків, проте в інших математичних бібліотеках, в яких він використовується, кодування може відбуватися з використанням зовсім інших алгоритмів.
  2. Довільна послідовність (рядок) символів латинського алфавіту, цифр та елементів пунктуації (від нуля і символів юнікод). Кожний наступний рядок відділяється від попереднього рядка за допомогою парного розділового знака - лапок ( «текст») або з використанням символу, з написанням, зворотним по відношенню до звичайного символу, косою риси.
  3. Літерали або константи, що включаються безпосередньо в текст. Це може бути будь-яке значення з true і false або їх аналогів.
  4. Масив. Він являє собою упорядкований перелік символів від нуля і далі. Кожен символ може бути представлений в будь-якій формі.
  5. Об'єкт. Це хаотично складений склад пар ключі / значення. Виходячи з того, що основна функція об'єктів полягає в поданні абстрактного типу даних, рекомендується (але це не обов'язкова умова), щоб ключі були унікальними.
  6. Пусте значення, що означає слово «Null».

Інтервали між символами допускаються, якщо вони будуть використані між синтаксичними одиницями. Для цього застосовуються кілька символів: звичайне відступ, горизонтальні текстові вкладки і коса риска.

Чим відкрити формат JSON

Текстовий формат обміну даними може бути представлений в популярних стандартах кодування, які дають можливість більш компактно зберігати і пересилати символи Unicode. Зокрема, за замовчуванням тут стоїть UTF-8. Також можуть застосовуватися UTF-16 і UTF-32. Їх використання обумовлюється тим, що всі три стандарти підтримують весь набір символів.

Але, якщо вони екрановані (НЕ цитування), щоб використовувати їх як регулярний вираз, Вони можуть бути написані для представлення символів в додаткових площинах з застосуванням UTF-16.

Найпростіший спосіб відкрити формат JSON - використовувати Блокнот на ПК. Для цього необхідно створити і відкрити новий текстовий документ, Вибрати в лівому верхньому кутку «Файл», потім «Відкрити».

Знайшовши потрібний документ, слід натиснути на кнопку провідника «Відкрити».

Документ відкриється і буде доступний для перегляду і редагування.

Крім цього, існують сторонні програмидля відкриття формату JSON. Серед них можна відзначити Altova XMLSpy, Notepad ++, Komodo Edit, Sublime Text і т.д.

Як створити файл

Формат JSON, як правило, використовується для роботи (зберігання і використання) службової інформації. Зазвичай це штатний розклад, яке не повинен бачити ні розробник, ні аудиторія веб-ресурсу.

Існує кілька способів створити файл з відповідним розширенням. Перш за все, це можна зробити за допомогою звичайного текстового редактора, Що є частиною операційної системи Microsoft Windows. Для цього необхідно відкрити Блокнот, вставити відповідний код і зберегти документ у звичайному і єдино доступному розширенні. Після цього необхідно поміняти його на потрібний варіант.

Другий спосіб має на увазі використання сторонніх сервісів. Найбільш популярним є JSON Editor Online. Він набагато зручніше, ніж варіант з Блокнотом. Інтерфейс сервісу представлений у вигляді двох робочих зон.

У першій відбувається безпосередньо робота по формуванню даних, у другій зоні розміщуються інструменти для цього. Після того як процес створення буде закінчено, необхідно натиснути на кнопку «Save» і вибрати спосіб збереження результату: на диск або онлайн.

Як уже зазначалося, використання онлайн-сервісу набагато зручніше Блокнота. Пов'язано це з тим, що сервіс в процесі роботи автоматично визначає синтаксичні помилки і виділяє їх, щоб користувач міг помітити упущення і відразу ж виправити.

Напевно ви коли-небудь чули про JSON. Що ж це таке? Що він може і як його використовувати?

В даному уроці ми розповімо про основи JSON і розкриємо наступні пункти:

  • Що таке JSON?
  • Для чого використовується JSON?
  • Як створити рядок JSON?
  • Простий приклад рядка JSON.
  • Порівняємо JSON і XML.
  • Як працювати з JSON в JavaScript і PHP?

Що таке JSON?

JSON - простий, заснований на використанні тексту, спосіб зберігати і передавати структуровані дані. За допомогою простого синтаксису ви можете легко зберігати все, що завгодно, починаючи від одного числа до рядків, масивів і об'єктів, в простому тексті. Також можна пов'язувати між собою масиви і об'єкти, створюючи складні структури даних.

Після створення рядка JSON, її легко відправити іншому додатку або в інше місце мережі, так як вона являє собою простий текст.

JSON має такі переваги:

  • Він компактний.
  • Його пропозиції легко читаються і складаються як людиною, так і комп'ютером.
  • Його легко перетворити в структуру даних для більшості мов програмування (числа, рядки, логічні змінні, масиви і так далі)
  • Багато мови програмування мають функції і бібліотеки для читання і створення структур JSON.

Назва JSON означає JavaScript Object Notation (уявлення об'єктів JavaScript). Як і представляє ім'я, він заснований на способі визначення об'єктів (дуже схоже на створення асоціативних масивів в інших мовах) і масивів.

Для чого використовується JSON?

Найчастіше поширене використання JSON - пересилання даних від сервера до браузера. Зазвичай дані JSON доставляються за допомогою AJAX, який дозволяє обмінюватися даними браузеру і сервера без необхідності перезавантажувати сторінку.

  1. Користувач натискає мініатюру продукту в онлайн магазині.
  2. JavaScript, що виконується на браузері, генерує запит AJAX до скрипту PHP, запущеного на сервері, передаючи ID обраного продукту.
  3. Скрипт PHP отримує назву продукту, опис, ціну та іншу інформацію з бази даних. Потім складає з даних рядок JSON і відсилає її браузеру.
  4. JavaScript, що виконується на браузері, отримує рядок JSON, декодує її і виводить інформацію про продукт на сторінці для користувача.

Також можна використовувати JSON для відправки даних від браузера на сервер, передаючи рядок JSON в якості параметра запитів GET або POST. Але даний метод має менше поширення, так як передача даних через запити AJAX може бути спрощена. Наприклад, ID продукту може бути включений на адресу URL як частина запиту GET.

Бібліотека jQuery має кілька методів, наприклад, getJSON () і parseJSON (), які спрощують отримання даних за допомогою JSON через запити AJAX.

Як створити рядок JSON?

Є кілька основних правил для створення рядка JSON:

  • Рядок JSON містить або масив значень, або об'єкт (асоціативний масив пар ім'я / значення).
  • масиву квадратних дужках ([і]) і містить розділений комою список значень.
  • об'єктполягає в фігурні дужки ((і)) і містить розділений комою список пар ім'я / значення.
  • Пара ім'я / значенняскладається з імені поля, укладеного в подвійні лапки, за яким слідує двокрапка (:) і значення поля.
  • значенняв масиві або об'єкті може бути:
    • Числом (цілим або з плаваючою точкою)
    • Рядком (в подвійних лапках)
    • Логічним значенням (true або false)
    • Іншим масивом (укладеним в квадратні дужки)
    • Інший об'єкт (укладений у фігурні дужки)
    • значення null

Щоб включити подвійні лапки в рядок, потрібно використовувати зворотну косу риску: \ ". Так само, як і в багатьох мовах програмування, можна поміщати керуючі символи і шістнадцяткові коди в рядок, випереджаючи їх зворотного косою рисою. Дивіться деталі на сайті JSON.

Простий приклад рядка JSON

Нижче наводиться приклад оформлення замовлення в форматі JSON:

( "OrderID": 12345, "shopperName": "Ваня Іванов", "shopperEmail": " [Email protected]"," Contents ": [(" productID ": 34," productName ":" Супер товар "," quantity ": 1), (" productID ": 56," productName ":" Чудо товар "," quantity ": 3)], "orderCompleted": true)

Розглянемо рядок докладно:

  • Ми створюємо об'єкт за допомогою фігурних дужок ((і)).
  • В об'єкті є кілька пар ім'я / значення: "orderID": 12345 Властивість з ім'ям "orderId" і цілочисельним значенням 12345 "shopperName": "Ваня Іванов" властивість з ім'ям "shopperName" і строковим значенням "Ваня Іванов" "shopperEmail": " [Email protected]"Властивість з ім'ям" shopperEmail "і строковим значенням" [Email protected]"" Contents ": [...] Властивість з ім'ям" contents ", значення якого є масивом" orderCompleted ": true Властивість з ім'ям" orderCompleted "і логічним значенням true
  • У масиві "contents" є 2 об'єкти, що представляють окремі позиції в замовленні. Кожен об'єкт містить 3 властивості: productID, productName, і quantity.

До речі, так як JSON заснований на оголошенні об'єктів JavaScript, то ви можете швидко і просто зробити вище наведену рядок JSON об'єктом JavaScript:

Порівняння JSON і XML

Багато в чому ви можете розглядати JSON як альтернативу XML, по крайней мере, в сфері веб додатків. Концепція AJAX оригінально грунтувалася на використанні XML для передачі даних між сервером і браузером. Але в останні роки JSON стає все більш популярним для перенесення даних AJAX.

Хоча XML є перевіреною технологією, яка використовується в достатній кількості додатків, перевагами JSON є більш компактний і простий для розпізнавання формат даних.

Ось як буде виглядати вище наведений приклад об'єкта на XML:

orderID 12345 shopperName Ваня Иванов shopperEmail [email protected] contents productID 34 productName Супер товар quantity 1 productID 56 productName Чудо товар quantity 3 orderCompleted true

Версія XML має істотно більший розмір. Насправді вона має довжину одна тисяча сто двадцять вісім символів, а варіант JSON - тільки 323 символу. Версію XML також досить важко сприймати.

Звичайно, це радикальний приклад. І можливо створити більш компактну запис XML. Але навіть вона буде істотно довше еквівалента на JSON.

Працюємо з рядком JSON в JavaScript

JSON має простий формат, але створювати рядок JSON вручну досить складно. Крім того, часто потрібно взяти рядок JSON, конвертувати її зміст в змінну, яку можна буде використовувати в коді.

Більшість мов програмування мають інструменти для простого перетворення змінних в рядки JSON і навпаки.

Створюємо рядок JSON із змінної

JavaScript має вбудований метод JSON.stringify (), який бере змінну і повертає рядок JSON, що представляє її зміст. Наприклад, створимо об'єкт JavaScript, який містить відомості про замовлення з нашого прикладу, а потім створимо з нього рядок JSON:

Даний код видасть:

Зверніть увагу, що метод JSON.stringify () повертає рядок JSON без пробілів. Її складніше читати, але зате вона більш компактна для передачі через мережу.

Існує кілька способів розібрати рядок JSON в JavaScript, але самий безпечний і надійний - використовувати вбудований метод JSON.parse (). Він отримує рядок JSON і повертає об'єкт або масив JavaScript, який містить дані. наприклад:

Ми створили змінну jsonString, яка містить рядок JSON нашого прикладу із замовленням. Потім ми передаємо цю рядок методу JSON.parse (), який створює об'єкт, що містить дані JSON і зберігає його у змінній cart. Залишається тільки здійснити перевірку, вивівши властивості об'єкта shopperEmail і productName масиву contents.

В результаті ми отримаємо наступний висновок:

У реальному додатку ваш JavaScript код буде отримувати замовлення у вигляді рядка JSON в AJAX відповіді від скрипта сервера, передавати рядок методу JSON.parse (), а потім використовувати дані для відображення на сторінці користувача.

JSON.stringify () і JSON.parse () мають можливість вибрати, такі як використання зворотних функцій для користувача конвертації певних даних. Такі опції дуже зручні для конвертації різних даних в правильні об'єкти JavaScript.

Працюємо з рядком JSON в PHP

PHP, як і JavaScript, має вбудовані функції для роботи з JSON рядками.

Створюємо рядок JSON із змінної PHP

Функція json_encode () приймає змінну PHPі повертає рядок JSON, що представляє зміст змінної. Ось наш приклад із замовленням, написаний на PHP:

12345, "shopperName" => "Ваня Іванов", "shopperEmail" => " [Email protected]"," Contents "=> array (array (" productID "=> 34," productName "=>" Супер товар "," quantity "=> 1), array (" productID "=> 56," productName "=> "Чудо товар", "quantity" => 3)), "orderCompleted" => true); echo json_encode ($ cart);?>

Даний код повертає абсолютно таку ж рядок JSON, як і в прикладі з JavaScript:

( "OrderID": 12345, "shopperName": "Ваня Іванов", "shopperEmail": " [Email protected]"," Contents ": [(" productID ": 34," productName ":" Супер товар "," quantity ": 1), (" productID ": 56," productName ":" Чудо товар "," quantity ": 3)], "orderCompleted": true)

В реальному додаткуваш скрипт PHP надішле дану рядок JSON як частина AJAX відповіді браузеру, де JavaScript код за допомогою методу JSON.parse () перетворює її назад в змінну для виведення на сторінці користувача.

Ви може передавати різні прапори в якості другого аргументу функції json_encode (). З їх допомогою можна змінювати принципи кодування змісту змінних в рядок JSON.

Створюємо змінну з рядка JSON

Для перетворення рядка JSON в змінну PHP використовується метод json_decode (). Замінимо наш приклад для JavaScript з методом JSON.parse () на код PHP:

shopperEmail. "
"; Echo $ cart-> contents-> productName."
"; ?>

Як і для JavaScript даний код видасть:

[Email protected]чудо товар

За замовчуванням функція json_decode () повертає об'єкти JSON як об'єкти PHP. Існують узагальнені об'єкти PHP класу stdClass. Тому ми використовуємо -> для доступу до властивостей об'єкта в прикладі вище.

Якщо вам потрібен об'єкт JSON у вигляді асоційованого масиву PHP, потрібно передати true в якості другого аргументу функції json_decode (). наприклад:

$ Cart = json_decode ($ jsonString, true); echo $ cart [ "shopperEmail"]. "
"; Echo $ cart [" contents "] [" productName "]."
";

Даний код видасть такий же висновок:

[Email protected]чудо товар

Також функції json_decode () можна передавати інші аргументи для вказівки глибини рекурсії і способів обробки великих цілих чисел.

висновок

Хоча JSON простий для розуміння і використання, він є дуже корисним і гнучким інструментом для передачі даних між додатками і комп'ютерами, особливо при використанні AJAX. Якщо ви плануєте розробляти AJAX додаток, то немає сумнівів, що JSON стане найважливішим інструментом у вашій майстерні.

Напевно ви коли-небудь чули про JSON. Що ж це таке? Що він може і як його використовувати?

В даному уроці ми розповімо про основи JSON і розкриємо наступні пункти:

  • Що таке JSON?
  • Для чого використовується JSON?
  • Як створити рядок JSON?
  • Простий приклад рядка JSON.
  • Порівняємо JSON і XML.
  • Як працювати з JSON в JavaScript і PHP?

Що таке JSON?

JSON - простий, заснований на використанні тексту, спосіб зберігати і передавати структуровані дані. За допомогою простого синтаксису ви можете легко зберігати все, що завгодно, починаючи від одного числа до рядків, масивів і об'єктів, в простому тексті. Також можна пов'язувати між собою масиви і об'єкти, створюючи складні структури даних.

Після створення рядка JSON, її легко відправити іншому додатку або в інше місце мережі, так як вона являє собою простий текст.

JSON має такі переваги:

  • Він компактний.
  • Його пропозиції легко читаються і складаються як людиною, так і комп'ютером.
  • Його легко перетворити в структуру даних для більшості мов програмування (числа, рядки, логічні змінні, масиви і так далі)
  • Багато мови програмування мають функції і бібліотеки для читання і створення структур JSON.

Назва JSON означає JavaScript Object Notation (уявлення об'єктів JavaScript). Як і представляє ім'я, він заснований на способі визначення об'єктів (дуже схоже на створення асоціативних масивів в інших мовах) і масивів.

Для чого використовується JSON?

Найчастіше поширене використання JSON - пересилання даних від сервера до браузера. Зазвичай дані JSON доставляються за допомогою AJAX, який дозволяє обмінюватися даними браузеру і сервера без необхідності перезавантажувати сторінку.

  1. Користувач натискає мініатюру продукту в онлайн магазині.
  2. JavaScript, що виконується на браузері, генерує запит AJAX до скрипту PHP, запущеного на сервері, передаючи ID обраного продукту.
  3. Скрипт PHP отримує назву продукту, опис, ціну та іншу інформацію з бази даних. Потім складає з даних рядок JSON і відсилає її браузеру.
  4. JavaScript, що виконується на браузері, отримує рядок JSON, декодує її і виводить інформацію про продукт на сторінці для користувача.

Також можна використовувати JSON для відправки даних від браузера на сервер, передаючи рядок JSON в якості параметра запитів GET або POST. Але даний метод має менше поширення, так як передача даних через запити AJAX може бути спрощена. Наприклад, ID продукту може бути включений на адресу URL як частина запиту GET.

Бібліотека jQuery має кілька методів, наприклад, getJSON () і parseJSON (), які спрощують отримання даних за допомогою JSON через запити AJAX.

Як створити рядок JSON?

Є кілька основних правил для створення рядка JSON:

  • Рядок JSON містить або масив значень, або об'єкт (асоціативний масив пар ім'я / значення).
  • масиву квадратних дужках ([і]) і містить розділений комою список значень.
  • об'єктполягає в фігурні дужки ((і)) і містить розділений комою список пар ім'я / значення.
  • Пара ім'я / значенняскладається з імені поля, укладеного в подвійні лапки, за яким слідує двокрапка (:) і значення поля.
  • значенняв масиві або об'єкті може бути:
    • Числом (цілим або з плаваючою точкою)
    • Рядком (в подвійних лапках)
    • Логічним значенням (true або false)
    • Іншим масивом (укладеним в квадратні дужки)
    • Інший об'єкт (укладений у фігурні дужки)
    • значення null

Щоб включити подвійні лапки в рядок, потрібно використовувати зворотну косу риску: \ ". Так само, як і в багатьох мовах програмування, можна поміщати керуючі символи і шістнадцяткові коди в рядок, випереджаючи їх зворотного косою рисою. Дивіться деталі на сайті JSON.

Простий приклад рядка JSON

Нижче наводиться приклад оформлення замовлення в форматі JSON:

( "OrderID": 12345, "shopperName": "Ваня Іванов", "shopperEmail": " [Email protected]"," Contents ": [(" productID ": 34," productName ":" Супер товар "," quantity ": 1), (" productID ": 56," productName ":" Чудо товар "," quantity ": 3)], "orderCompleted": true)

Розглянемо рядок докладно:

  • Ми створюємо об'єкт за допомогою фігурних дужок ((і)).
  • В об'єкті є кілька пар ім'я / значення: "orderID": 12345 Властивість з ім'ям "orderId" і цілочисельним значенням 12345 "shopperName": "Ваня Іванов" властивість з ім'ям "shopperName" і строковим значенням "Ваня Іванов" "shopperEmail": " [Email protected]"Властивість з ім'ям" shopperEmail "і строковим значенням" [Email protected]"" Contents ": [...] Властивість з ім'ям" contents ", значення якого є масивом" orderCompleted ": true Властивість з ім'ям" orderCompleted "і логічним значенням true
  • У масиві "contents" є 2 об'єкти, що представляють окремі позиції в замовленні. Кожен об'єкт містить 3 властивості: productID, productName, і quantity.

До речі, так як JSON заснований на оголошенні об'єктів JavaScript, то ви можете швидко і просто зробити вище наведену рядок JSON об'єктом JavaScript:

Порівняння JSON і XML

Багато в чому ви можете розглядати JSON як альтернативу XML, по крайней мере, в сфері веб додатків. Концепція AJAX оригінально грунтувалася на використанні XML для передачі даних між сервером і браузером. Але в останні роки JSON стає все більш популярним для перенесення даних AJAX.

Хоча XML є перевіреною технологією, яка використовується в достатній кількості додатків, перевагами JSON є більш компактний і простий для розпізнавання формат даних.

Ось як буде виглядати вище наведений приклад об'єкта на XML:

orderID 12345 shopperName Ваня Иванов shopperEmail [email protected] contents productID 34 productName Супер товар quantity 1 productID 56 productName Чудо товар quantity 3 orderCompleted true

Версія XML має істотно більший розмір. Насправді вона має довжину одна тисяча сто двадцять вісім символів, а варіант JSON - тільки 323 символу. Версію XML також досить важко сприймати.

Звичайно, це радикальний приклад. І можливо створити більш компактну запис XML. Але навіть вона буде істотно довше еквівалента на JSON.

Працюємо з рядком JSON в JavaScript

JSON має простий формат, але створювати рядок JSON вручну досить складно. Крім того, часто потрібно взяти рядок JSON, конвертувати її зміст в змінну, яку можна буде використовувати в коді.

Більшість мов програмування мають інструменти для простого перетворення змінних в рядки JSON і навпаки.

Створюємо рядок JSON із змінної

JavaScript має вбудований метод JSON.stringify (), який бере змінну і повертає рядок JSON, що представляє її зміст. Наприклад, створимо об'єкт JavaScript, який містить відомості про замовлення з нашого прикладу, а потім створимо з нього рядок JSON:

Даний код видасть:

Зверніть увагу, що метод JSON.stringify () повертає рядок JSON без пробілів. Її складніше читати, але зате вона більш компактна для передачі через мережу.

Існує кілька способів розібрати рядок JSON в JavaScript, але самий безпечний і надійний - використовувати вбудований метод JSON.parse (). Він отримує рядок JSON і повертає об'єкт або масив JavaScript, який містить дані. наприклад:

Ми створили змінну jsonString, яка містить рядок JSON нашого прикладу із замовленням. Потім ми передаємо цю рядок методу JSON.parse (), який створює об'єкт, що містить дані JSON і зберігає його у змінній cart. Залишається тільки здійснити перевірку, вивівши властивості об'єкта shopperEmail і productName масиву contents.

В результаті ми отримаємо наступний висновок:

У реальному додатку ваш JavaScript код буде отримувати замовлення у вигляді рядка JSON в AJAX відповіді від скрипта сервера, передавати рядок методу JSON.parse (), а потім використовувати дані для відображення на сторінці користувача.

JSON.stringify () і JSON.parse () мають можливість вибрати, такі як використання зворотних функцій для користувача конвертації певних даних. Такі опції дуже зручні для конвертації різних даних в правильні об'єкти JavaScript.

Працюємо з рядком JSON в PHP

PHP, як і JavaScript, має вбудовані функції для роботи з JSON рядками.

Створюємо рядок JSON із змінної PHP

Функція json_encode () приймає змінну PHP і повертає рядок JSON, що представляє зміст змінної. Ось наш приклад із замовленням, написаний на PHP:

12345, "shopperName" => "Ваня Іванов", "shopperEmail" => " [Email protected]"," Contents "=> array (array (" productID "=> 34," productName "=>" Супер товар "," quantity "=> 1), array (" productID "=> 56," productName "=> "Чудо товар", "quantity" => 3)), "orderCompleted" => true); echo json_encode ($ cart);?>

Даний код повертає абсолютно таку ж рядок JSON, як і в прикладі з JavaScript:

( "OrderID": 12345, "shopperName": "Ваня Іванов", "shopperEmail": " [Email protected]"," Contents ": [(" productID ": 34," productName ":" Супер товар "," quantity ": 1), (" productID ": 56," productName ":" Чудо товар "," quantity ": 3)], "orderCompleted": true)

У реальному додатку ваш скрипт PHP надішле дану рядок JSON як частина AJAX відповіді браузеру, де JavaScript код за допомогою методу JSON.parse () перетворює її назад в змінну для виведення на сторінці користувача.

Ви може передавати різні прапори в якості другого аргументу функції json_encode (). З їх допомогою можна змінювати принципи кодування змісту змінних в рядок JSON.

Створюємо змінну з рядка JSON

Для перетворення рядка JSON в змінну PHP використовується метод json_decode (). Замінимо наш приклад для JavaScript з методом JSON.parse () на код PHP:

shopperEmail. "
"; Echo $ cart-> contents-> productName."
"; ?>

Як і для JavaScript даний код видасть:

[Email protected]чудо товар

За замовчуванням функція json_decode () повертає об'єкти JSON як об'єкти PHP. Існують узагальнені об'єкти PHP класу stdClass. Тому ми використовуємо -> для доступу до властивостей об'єкта в прикладі вище.

Якщо вам потрібен об'єкт JSON у вигляді асоційованого масиву PHP, потрібно передати true в якості другого аргументу функції json_decode (). наприклад:

$ Cart = json_decode ($ jsonString, true); echo $ cart [ "shopperEmail"]. "
"; Echo $ cart [" contents "] [" productName "]."
";

Даний код видасть такий же висновок:

[Email protected]чудо товар

Також функції json_decode () можна передавати інші аргументи для вказівки глибини рекурсії і способів обробки великих цілих чисел.

висновок

Хоча JSON простий для розуміння і використання, він є дуже корисним і гнучким інструментом для передачі даних між додатками і комп'ютерами, особливо при використанні AJAX. Якщо ви плануєте розробляти AJAX додаток, то немає сумнівів, що JSON стане найважливішим інструментом у вашій майстерні.

JSON(JavaScript Object Notation) - простий формат обміну даними, зручний для читання і написання як людиною, так і комп'ютером. Він заснований на підмножині мови програмування JavaScript, визначеного в стандарті ECMA-262 3rd Edition - December 1999. JSON - текстовий формат, повністю незалежний від мови реалізації, але він використовує угоди, знайомі програмістам C-подібних мов, таких як C, C ++, C #, Java, JavaScript, Perl, Python і багатьох інших. Ці властивості роблять JSON ідеальним мовою обміну даними.

JSON заснований на двох структурах даних:

  • Колекція пар ключ / значення. У різних мовах, ця концепція реалізована як об'єкт, Запис, структура, словник, хеш, іменований список або асоціативний масив.
  • Упорядкований список значень. У більшості мов це реалізовано як масив, Вектор, список або послідовність.

Це універсальні структури даних. Майже всі сучасні мови програмування підтримують їх в будь-якій формі. Логічно припустити, що формат даних, незалежний від мови програмування, повинен бути заснований на цих структурах.

В нотації JSON це виглядає так:

об'єкт- невпорядкований набір пар ключ / значення. Об'єкт починається з (що відкриває фігурної дужки і закінчується) закриває фігурної дужки. Кожне ім'я супроводжується: двокрапкою, пари ключ / значення поділяються, коми.

масив- упорядкована колекція значень. Масив починається з [відкриває квадратної дужки і закінчується] закриває квадратної дужкою. Значення розділені, коми.


значенняможе бути рядкомв подвійних лапках, числом, True, false, null, об'єктомабо масивом. Ці структури можуть бути вкладеними.


рядок- колекція нуля або більше символів Unicode, укладена в подвійні лапки, використовуючи \ зворотну косу риску в якості символу екранування. Символ представляється як Односимвольна рядок. Схожий синтаксис використовується в C і Java.


числопредставляється так само, як в C або Java, крім того, що використовується толко десяткова системачислення.


Прогалини можуть використовуватися між будь-якими лексемами.

Виключаючи деякі деталі кодування, вищевикладене повністю описує мову.


Сподобалася стаття? Поділіться з друзями!