Змінні, масиви та об'єкти - звична та зручна форма подання даних. Описувати дані прийнято в мові JavaScript, що робити не обов'язково в мові сервера PHP. Формат JSON дозволяє узагальнити їх в одне ціле і не наголошувати на мові програмування. При цьому дані перетворюються на пари: "ім'я = значення". Значення кожної з них також може бути сукупністю таких пар.
Прийнято JSON асоціювати з фігурними дужками і останнє цілком обґрунтовано, оскільки формат JSON = Object Notation JavaScript. Останні особливо динамічні роки багато що змінилося. Що створювалося заради конкретної мети, часто давало несподівані плоди або відкривало нові горизонти.
Обмін даними: браузер - сервер Технологія AJAX стала традиційною, звичайне оновлення сторінки повністюперестало користуватися популярністю. Відвідувач, відкриваючи сайт, ініціює серію часткових обмінів даними, коли ті чи інші сторінки змінюються лише в тому місці, яке є актуальним.
Вважається, що поява JSON пов'язана з використанням саме AJAX, але насправді асоціативні та його об'єктна нотація (особливості синтаксису опису та використання об'єктів) мають набагато більш споріднене відношення до JSON, ніж обмін даними між браузером та сервером.
Оскільки контент сторінок сучасних сайтів справді став «масивним» (об'ємним), то й ефективність формату для обміну даними набула особливого значення. Не можна сказати, що JSON став новим поданням даних, але те, що він давно був елементом синтаксису JavaScript, має істотне значення.
Використання кирилиці в іменуванні змінних - дуже несподіване явище (нонсенс), але це працює в останніх версіях Chrome, Firefox і, навіть, у Internet Explorer 11.
Кирилиця та JSON Зрозуміло, використовувати це зовсім несподіване явище не варто, нагадуючи, як легко значення змінних, записані російськими літерами, перетворюються на кракозябри: що говорити про імена, особливо зовнішні.
Сумнівно, що ініціативу в кирилиць підтримає зовнішнє оточення браузера, з яким йому постійно доводиться мати справу. Але цей факт заслуговує на увагу з тієї простої причини, що JSON формат - це можливість писати імена і значення так, як завгодно розробнику. Це важливо, оскільки в кожній задачі опис галузі застосування так, як вона цього вимагає, суттєво спрощує налагодження та зменшує кількість помилок.
Не важливо, яке саме мало під собою основу синтаксичне нововведення - JSON, важливо, що воно дало законне право та реальну можливість поставити відповідність: "будь-яке ім'я = будь-яке значення".
Треба віддати належне JavaScript: те, що передбачено синтаксисом, не зобов'язує розробника і нічого йому не нав'язує. Розробник вільно використовує синтаксис мови для оптимального формування моделі даних та алгоритму їх використання.
PHP та JSON Приймаючи дані у форматі JSON, сервер (за допомогою PHP зокрема) надає можливість їх обробляти як є і повертати назад у браузер результат в аналогічному форматі. Початковий масив PHP:
- $cJSON = array ("a"=> "alfa", "b"=> "beta", "g"=> "gamma").
Перетворення у формат JSON для передачі в браузер:
- $cJS = json_encode($cJSON).
Результат:
- ("a":"alfa","b":"beta","g":"gamma").
Допускається зображена на фото вкладеність.
Тут сформований масив був доданий новим елементом «сам у собі» з автоматичним індексом "0", а потім ще раз із зазначеним індексом "z".
Json_decode() виконує перетворення рядка JSON на масив PHP. Аналогічних результатів можна досягти, маніпулюючи функціями та explode(). У деяких випадках цей варіант є кращим.
Рівень вкладеності Елементи можуть бути вкладені один в одного як на стороні браузера, так і сервері. На практиці формат JSON (опис стандарту RFC 4627) надає значно більше 4 рівнів вкладеності, але не слід зловживати цією можливістю.
Найкраще ніколи не виходити за межі розумної достатності, це робить код читабельним, спрощує його налагодження та розуміння іншими розробниками.
JSON прийнято відносити до конструкцій даних, які простіше за XML, зрозумілі одночасно і людям, і комп'ютерам. Це справді так, коли обсяг даних малий, а рівень вкладеності розробник вибрав грамотно. В інших випадках вважати кількість дужок і розуміти складно як на стороні браузера, так і на стороні сервера.
Файли JSON Застосування JSON на практиці часто не обмежується доступним сприйняттю коротким рядком. Будь-які конструкції даних завжди мають прагматичний характер. При цьому JSON може ефективно застосовуватися як у реальних даних завдання (штат підприємства), так і для реалізації тимчасових даних (кеш об'єкта).
Штат підприємства та JSON-формат: приклад Зазвичай запис про одну людину - це прізвище, ім'я, по батькові, рік народження, спеціальність, освіта, ... і ще простеньких значень. Навіть в особливо вимогливих компаніях запис про одну людину не перевищуватиме десятка-двох полів. Це доступно сприйняттю і може бути поміщено в рядок бази даних.
Якщо в компанії працює кілька людей – це одне, але якщо десятки тисяч – це зовсім інше. Можна продовжувати використовувати базу даних, але зберігання її у вигляді файлу виглядає практичнішим і доступнішим для використання.
JSON – це звичайний текстовий файл. Випадок зі штатним розкладом, куди не йшло. Прочитати його можна. Відкрити і змінити також доступно в будь-якому текстовому редакторі, який не має звички додавати свою службову інформацію до файлу. Взагалі, *.json – це чистий текст як усередині браузера, так і всередині файлу – рядок.
На фото представлений кеш об'єкта, який формує картинку, приклад.
Це приклад змісту файлу, сформованого сайтом, який надає послугу кольорового об'ємного друку на кружках та керамічних виробах. Звичайно, вирішити, маючи такий JSON-формат, ніж відкрити його, справді проблематично. Однак у цьому та подібних випадках проблем з читанням файлу не виникає: PHP читає файл, розбирає його та передає у браузер. Змінені відвідувачем дані повертаються на сервер та записуються назад.
У такому варіанті використання файл виступає як змінна, яка зберігається поза кодом. При необхідності змінна отримує значення з файлу, а якщо вона буде змінена відвідувачем у діалозі, передбаченому сайтом, то всі зміни запишуться як є. Немає необхідності читати та перевіряти вміст файлу.
JSON часто використовується для зберігання та використання службової інформації – це не штатний розклад, його не обов'язково бачити ні розробнику, ні відвідувачу сайту.
XML та JSON "Всього свого часу" - класичне знання, прийняте за аксіому ще до появи програмування. "Ніщо не з'являється просто так", - це теж було до того, як людина написала першу зрозумілу програму штучною мовою.
Формати даних з'являються від реальної потреби та ґрунтуються на досягнутих знаннях. У HTML - свій шлях, у XML - свій шлях, а JSON - це об'єктна логіка JavaScript, розширена іншими мовами. Порівнювати одне з одним не найкраще заняття. Кожному своє.
XML чудово справляється зі своїми завданнями і йти в історію явно не збирається. А JSON використовувався і до 2006 року, просто не кожен розробник вважав за свій обов'язок декларувати ті чи інші варіанти подання своїх даних.
Були випадки на практиці, коли на бейсику були написані програми, які не використовують JSON як такий, але чудово зберігають пари "ім'я = значення" і надають їх у розпорядження потрібним алгоритмам у потрібний час.
Спецсимволи («`», «~», «|», ...) та формати даних Звичка працювати з асоціативними масивами та об'єктами на JavaScript робить використання JSON природним та зручним. Це справді відмінний формат, але вміння розділяти і з'єднувати, маніпулюючи рядками та масивами, має куди більш глибинне коріння.
Функції join/split мови JavaScript та implode/explode мови PHP дозволяють зручно та ефективно використовувати як формати даних XML, JSON, і власний варіант. Останній часто оптимальніший, а перші два ідеально підходять для варіантів загального користування. Якщо йде передача інформації іншому розробнику, серверу, файл або базу даних, краще XML і JSON не знайти. З ними всі працюють, тому передача/прийом інформації не потребує коментарів.
Використання JSON в Android Читання та запис даних у форматі JSON в Android - не лише норма речей, а й безліч об'єктів, орієнтованих на роботу саме з таким форматом даних.
При цьому використовується формат JSON. Можливо, це так і є, але питання не в феноменальності соцмереж, а в тому, що дійсно подання інформації у форматі "ім'я = значення" зручне як для програмування, так і для використання. На відміну від суворого та закомплексованого «XML» це справді людино-зручний формат.
Асоціативні масиви Склалося те, що змінні слід описувати (JavaScript) чи навіть вказувати початкове значення (PHP). В обох випадках змінна може змінити свій тип дуже легко. У разі потреби мова виконує це перетворення автоматично.
Але чому змінної не змінювати також своє ім'я, не з'являтися в ході виконання алгоритму і не зникати, коли необхідність в ній відпаде? Асоціативні масиви дозволяють вирішити цю проблему, але тоді при використанні таких щодо динамічних змінних, ім'я масиву та відповідні синтаксичні конструкції йтимуть у місця їх застосування.
Особливо ця обставина яскраво виражена на PHP, але з цим можна миритися, як, втім, з символом $ в імені змінної і комбінацією $this-> всередині об'єкта. Програмуючи одночасно на JavaScript і PHP, спочатку дійсно дивуєшся, як все відрізняється, але потім все стає таким звичним і природним.
Асоціативний масив -> JSON У цьому прикладі за допомогою бібліотеки PHPOffice/PHPWord створюється документ *.docx і масив aProperties містить властивості цього документа (автор, компанія, заголовок, категорія, дата створення...).
Другий масив містить дані по сторінці:
- орієнтація (альбомна чи звичайна);
- розміри по вертикалі та горизонталі;
- відступи (поля ліворуч, зверху, знизу, праворуч);
- колонтитули.
Формування документа виконується на сервері, де встановлена бібліотека PHPOffice/PHPWord. На сайті передбачено керування значеннями цих масивів за допомогою JavaScript. Результат у форматі JSON повертається назад на сервер і використовується в алгоритмах PHP, в його конструкціях, тобто в масивах.
Динамічні змінні Формат JSON вирішує проблему динамічних змінних. Тут можна створювати, змінювати та видаляти змінні без зайвих синтаксичних нагромаджень. Це чудово виглядає і використовується в JavaScript.
У цьому прикладі функція GetOjInfo () вибирає ім'я значення та значення об'єкта. Спочатку об'єкт JSON-рядка, присвоєної змінній ojInfo, має в своєму розпорядженні три елементи: Name, age і work. Трохи згодом додається змінна Status.
Після першого оператора delete рядок ojInfo втрачає елемент age, після другого delete - елемент work. Якщо припустити, що цей рядок є добіркою змінних, що мають певний зміст, то за допомогою JSON можна реально створювати, змінювати та видаляти будь-які їх набори поза операційним полем (синтаксисом) опису та обробки мови JavaScript.
Формат JSON на такий варіант не був розрахований, але таке можливо практично і зручно.
), і між самими серверами (програмні HTTP-інтерфейси). Формат JSON також добре підходить для збереження складних динамічних структур у реляційних базах даних або файловому кеші.
Оскільки формат JSON є підмножиною синтаксису мови JavaScript, він може бути швидко десеріалізований вбудованою функцією eval() . Крім того, можлива вставка цілком працездатних JavaScript-функцій. У PHP, починаючи з версії 5.2.0, підтримка JSON включена в ядро у вигляді функцій json_decode() та json_encode() , які перетворюють типи даних JSON у відповідні типи PHP і навпаки.
Синтаксис JSON будується на двох структурах:
- Набір пар ключ/значення. У різних мовах це реалізовано як об'єкт, запис , структура , словник , хеш-таблиця , список із ключем або асоціативний масив . Ключом може бути лише рядок, значенням – будь-яка форма.
- Пронумерований набір значень. У багатьох мовах це реалізовано як масив, вектор , список чи послідовність .
Це – універсальні структури даних. Теоретично, все сучасні мовипрограмування підтримують в тій чи іншій формі. Так як JSON використовується для обміну даними між різними мовами програмування, то є сенс будувати його на цих структурах.
У JSON використовуються такі форми:
- Об'єкт - це невпорядковане безліч пар ім'я / значення, укладене у фігурні дужки ( ). Між ім'ям та значенням стоїть символ ": "
, а пари ім'я/значення розділяються комами.
- Масив (одномірний) – це безліч значень, що мають порядкові номери (індекси). Масив полягає у квадратні дужки. Значення відокремлюються комами.
- Значення може бути рядкому подвійних лапках, числом, значенням trueабо false, об'єктом, масивом, або значенням null. Ці структури можуть бути вкладені одна в одну.
- Рядок - це впорядковане безліч з нуля або більше символів юнікоду, укладене в подвійні лапки, з використанням escape-послідовностей, що починаються зі зворотної косої риси (backslash). Символи видаються простим рядком.
- Ім'я – це рядок.
Рядокдуже схожа на рядок у мовах та Java. Числотеж дуже схоже на С або Java-число, за винятком того, що використовується лише десятковий формат. Пробіли можуть бути вставлені між двома символами.
Наступний приклад показує JSON-подання об'єкта, що описує людину. В об'єкті є рядковіполя імені та прізвища, об'єкт, що описує адресу, та масив, що містить список телефонів.
( "firstName" : "Іван" , "lastName" : "Іванів" , " address" : ( "streetAddress" : "Московське ш., 101, кв.101" , "city" : "Ленінград" , "postalCode" : 101101), "phoneNumbers": ["812 123-1234", "916 123-4567"]))
На мові XML подібна структура виглядала б приблизно так:
Іван Іванов Московське ш., 101, кв.101 Ленінград 101101 812 123-1234 916 123-4567
812 123-1234
916 123-4567
Порівняння з YAML Як функціонально, так і синтаксично, JSON є підмножиною мови YAML . Зокрема, специфікація YAML 1.2 вказує, що «будь-який файл у форматі JSON є коректним файлом у форматі YAML» . Найбільш поширений парсер YAML здатний обробляти і JSON. Специфікація YAML до версії 1.2 не повністю покривала JSON, в першу чергу через відсутність рідної підтримки UTF-32 в YAML, а також вимоги пробілу після роздільника-коми. Крім того, специфікація JSON включала коментарі у стилі /* */.
Найбільш важливою відмінністю YAML є набір розширень синтаксису, яким немає аналогів у JSON:
Реляційний: YAML підтримує реляційні дані: в YAML-документі можна посилатися на якір, який раніше зустрівся у файлі/потоку. У такий спосіб можна висловити рекурсивні структури. Розширюваний: YAML підтримує типи даних, що розширюються, крім примітивів (тобто рядків, чисел, логічних значень). Блоки: YAML доступний блоковий синтаксис з відступами; він дозволяє описати структуровані дані без використання зайвих символів (різних дужок, лапок тощо).
JSON Schema JSON Schema - одна з мов опису структури JSON документа. Використовує синтаксис JSON. Базується на концепціях XML Schema, RelaxNG, Kwalify. JSON Schema - самоописова мова: при його використанні для обробки даних та опису їх допустимості можуть використовуватися одні й ті самі інструменти серіалізації/десеріалізації.
Використання JSON в Ajax Наступний приклад Java-коду показує, як браузер може використовувати XMLHttpRequest , щоб запитувати з сервера об'єкт у форматі JSON (серверна частина програми опущена; в ній повинен бути розміщений код, що відправляє дані у форматі JSON-рядки у відповідь на запити по url).
Var the_object; var http_request = новий XMLHttpRequest() ; http_request.open ( "GET", url, true); http_request.send (null); http _request.onreadystatechange = function () ( if ( http_request.readyState == 4 ) ( if ( http_request.status == 200 ) ( the_object = JSON.parse (http_request.responseText ) ; ) ) else ( alert( " the URL." ) ; ) http_request = null ; ) ) ;
Зауважимо, що даний приклад застосування XMLHttpRequest не є універсальним для всіх браузерів (для браузерів, заснованих на Internet Explorer, Opera, Safari та Mozilla, у коді повинні бути ті чи інші відмінності). Можливості застосування XMLHttpRequest обмежені через правила обмеження домену (same origin policy): URL відповіді на запит повинен знаходитися в тому ж DNS домені, що й сервер, на якому знаходиться сторінка, яка запитує відповідь. В якості альтернативи застосовується підхід JSONP , що включає використання закодованого виклику функції, що передається між клієнтом і сервером, щоб клієнт міг завантажувати закодовані в JSON дані з сторонніх доменів, і повідомляти про завершення сторону, що викликає, хоча це призводить до деяких ризиків для безпеки і додатковим вимог до сервера.
Як варіант, у коді сторінки можна використовувати елементи для асинхронного запиту JSON даних або просто . Ці підходи були поширені до широкої підтримки XMLHttpRequest.
Також можна використовувати для передачі JSON даних динамічні теги правило обмеження домену (same origin policy), але він призводить до появи вразливого коду. Як безпечнішу альтернативу було запропоновано використовувати JSONRequest.
Питання безпеки Хоча JSON призначений для передачі даних у серіалізованому вигляді, його синтаксис відповідає синтаксису JavaScriptі це створює низку проблем безпеки. Найчастіше для обробки даних, отриманих від зовнішнього джерела у форматі JSON, до них застосовується функція eval() без попередньої перевірки.
JavaScript eval() Оскільки JSON є синтаксично правильним фрагментом коду JavaScript, найпростішим способом розбору JSON-даних у JavaScript-програмі є використання вбудованої в JavaScript функції eval() , яка призначена для виконання JavaScript-виразів. При цьому підході відпадає потреба у використанні додаткових парсерів.
Техніка використання eval() робить систему вразливою, якщо джерело JSON-даних не є довіреним ( англ.). Як такі дані може виступати шкідливий JavaScript код для атак класу Впровадження коду ( англ.). За допомогою цієї вразливості можна здійснювати крадіжку даних, підробку автентифікації. Проте, вразливість можна усунути рахунок використання додаткових засобів перевірки даних на коректність. Наприклад, до виконання eval() отримані від зовнішнього джерела дані можуть перевірятися за допомогою регулярних виразів. У RFC, що визначає JSON, пропонується використовувати наступний код для перевірки його відповідності формату JSON
Var my_JSON_object =! (/[^,:()\[\]0-9.\-+Eaeflnr-u \n\r\t]/ .test ( text.replace (/"(\\.|[^"\\]) )*"/g , "" ) ) ) && eval("(" + text + ")" ) ;
Як безпечніша альтернатива eval() була запропонована нова функція parseJSON(), здатна обробляти лише JSON-дані. Вона була представлена в четвертій версії стандарту ECMAScript і описана у статті JSON: Знежирена альтернатива XML. В даний час вона доступна як бібліотека JavaScript і буде включена до п'ятої редакції ECMAScript.
Вбудований JSON Останні версії веб-браузерів мають вбудовану підтримку JSON і здатні обробляти його без виклику функції eval() , що призводить до описаної проблеми. Обробка JSON у такому разі зазвичай здійснюється швидше. Так, у червні 2009 року наступні браузери мали вбудовану підтримку JSON:
Принаймні п'ять популярних бібліотек JavaScript використовують вбудований JSON у разі його доступності:
Підробка кросдоменного запиту Непродумане використання JSON робить сайти вразливими до підробки міжсайтових запитів (CSRF або XSRF). Оскільки тег допускає використання джерела, що не належить до того ж домену, що й використовує ресурс, це дозволяє виконувати код під виглядом даних, представлених у форматі JSON, у контексті довільної сторінки, що уможливлює компрометацію паролів або іншої конфіденційної інформації користувачів, що пройшли авторизацію на іншому сайті.
Це є проблемою тільки у разі вмісту в JSON-даних конфіденційної інформації, яка може бути компрометована третьою стороною і якщо сервер розраховує на політику одного джерела ( англ.), блокуючи доступ до даних при виявленні зовнішнього запиту. Це не є проблемою, якщо сервер визначає допустимість запиту, надаючи дані лише у разі його коректності. HTTP cookie не можна використовувати для визначення цього. Виключне використання HTTP cookie використовується підробкою міжсайтових запитів.
JSONP & JSONPP JSONP (JSON Padding) або "JSON з підкладкою" є розширенням JSON, коли ім'я функції зворотного виклику вказується як вхідний аргумент.
В основу технології покладено той факт, що політика безпеки браузера дозволяє використовувати тег для звернення до серверів, відмінних від сервера, з якого відбулося завантаження сторінки.
Без використання технології JSONP (тобто, використовуючи просто JSON кодування даних) сервер може повернути тільки дані. Наприклад так:
("paper": "A4", "count": 5)
Однак це лише дані, і вони не можуть впливати на браузер.
Використовуючи техніку JSONP, сторонньому серверу передається в рядку виклику (GET) ім'я callback функції:
Тут параметр jsonp містить ім'я callback функції parseResponse.
Тепер сторонній сервер example.com може повернути наступний код:
ParseResponse(( "paper" : "A4" , "count" : 5 ) )
Тепер код викликає JavaScript-функцію першого домену.
Спочатку ідея була запропонована в блозі MacPython в 2005 році, і в даний час використовується багатьма Web 2.0 додатками, такими як Dojo Toolkit Applications, Google Toolkit Applications і zanox Web Services. Подальші розширення цього протоколу були запропоновані з урахуванням введення додаткових аргументів, наприклад, у випадку JSONPP за підтримки S3DB веб-сервісів.
Оскільки JSONP використовує скрипт теги, виклики, по суті, відкриті світу. Тому JSONP може бути недоречним для зберігання конфіденційних даних .
Увімкнення скриптових тегів від віддалених сайтів дозволяє їм передати будь-який контент на сайті. Якщо віддалений сайт має вразливості, які дозволяють виконати Javascript ін'єкції, вихідний сайт також може бути торкнутися ними.
JSONPP (parameterized JSON with padding) Параметризований JSON з підкладкою - розвиток ідеї JSONP
JSONPP включає URL джерела, ім'я функції, яка буде обробляти JSON дані, рядок для eval після отримання даних і рядок для eval після закінчення обробки даних:
JSON_call(SRC, JSONP, JSONPP, ONLOAD);
в результаті обертається
Ans = JSONP(SRC) ( eval(JSONPP(ans) ) ; eval(ONLOAD) ; )
Взагалі для самої ідеї JSONPP не важливо кількість параметрів. Достатньо SRC, JSONP, JSONPP (і їхня обробка на стороні сервера, а потім клієнта) для того, щоб це був JSONPP.
Розглянемо з прикладу роботи з сервісом S3DB.
Function s3db_jsonpp_call(src, next_eval) ( var call = "call_" + Math .random () .toString () .replace (/\./g , "" ) ; var headID = document.getElementsByTagName ("head" ) [ 0 ] ; var script = document.createElement ("script" ) ; script.id = call; script.type = "text/javascript" ; "&onload=remove_element_by_id("" + script.id + "")" ; script.src = src; headID.appendChild (script) ; ; ) function remove_element_by_id(id) ( var e = document.getElementById (id) ; e.parentNode .removeChild (e) ; return false ; )
У прикладі функція s3db_jsonpp_call() створює в DOM частині head елемент script, src якого відповідає виклику JSONPP.
Після отримання відповіді від сервера буде викликана s3db_jsonpp() – вона передана у параметрах виклику, як це має бути за правилами JSONP.
Усередині s3db_jsonpp() спрацює eval(jsonpp) і буде повернення значення ans.
Виклик eval(onload) призводить до виконання remove_element_by_id() з id створеного скрипта в head і в результаті для його видалення, адже він вже все одно не буде використовуватися оскільки id у прикладі було згенеровано випадковим чином на початку функції s3db_jsonpp_call(). Цей виклик відповідає серверу.
Посилання на об'єкти Стандарт JSON не підтримує посилання на об'єкти, проте Dojo Toolkit демонструє, як за допомогою додаткових угод можна забезпечити підтримку таких посилань засобами стандартного JSON. Зокрема, модуль dojox.json.ref надає підтримку кількох форм посилань, включаючи кругові, множинні, міждокументні та «ліниві» посилання.
також Примітки YAML Ain't Markup Language (YAML™) Version 1.2 (англ.) . - Working Draft 2008-05-11. (недоступне посилання - історія) Перевірено 24 вересня 2009 року.
. RedHanded (07 квітня 2005). Перевірено 25 вересня 2012 року.
Json.Com JSON Schema Proposal (англ.) .(недоступне посилання - історія)
RFC 4627
JSON: Знежирена альтернатива XML (англ.) . Архівовано
json2.js (англ.). Архівовано з першоджерела 12 лютого 2012 року. Перевірено 24 вересня 2009 року.
Використання вбудованого JSON (англ.).
Вбудований JSON в IE8 (англ.). Архівовано з першоджерела 12 лютого 2012 року.
Web специфікації, що підтримуються Opera Presto 2.5 (англ.) (March 10, 2010). Архівовано з першоджерела 12 лютого 2012 року. Перевірено 29 березня 2010 року.
Реалізація ES 3.1 об'єкта JSON (англ.).
Ticket # 4429lang = en . Архівовано з першоджерела 12 лютого 2012 року.
Ticket #4429 (May 22, 2009). Архівовано з першоджерела 12 лютого 2012 року. Перевірено 3 липня 2009 року.
Ticket # 8111lang = en . Архівовано з першоджерела 12 лютого 2012 року.
MooTools Core & More 1.3.1. Архівовано з першоджерела 12 лютого 2012 року.
YUI 2: JSON utility (September 1, 2009). Архівовано з першоджерела 12 лютого 2012 року. Перевірено 22 жовтня 2009 року.
Learn JSON (April 7, 2010). Архівовано з першоджерела 12 лютого 2012 року. Перевірено 7 квітня 2010 року.
Джеремі ГроссменПросунуті техніки атак на веб-застосунки, що використовують GMail (англ.) . WhiteHat Security. Архівовано з першоджерела 12 лютого 2012 року. Перевірено 23 вересня 2009 року.
від __future__ import * » Remote JSON-JSONP. Bob.pythonmac.org. Архівовано з першоджерела 12 лютого 2012 року. Перевірено 8 вересня 2008 року.
Almeida, Jonas (June 11, 2008). JSON, JSONP, JSONPP? »(S3DB). Перевірено на 2009-04-26.
RIAspot JSON P для Cross Site XHR .(недоступне посилання - історія)
JSON referencing в Dojo. Архівовано з першоджерела 12 лютого 2012 року.Посилання - Офіційна домашня сторінка формату російською мовою
- json.js , json2.js - бібліотека, розроблена Дугласом Крокфордом, для роботи з даними JSON JavaScript. Розширює об'єкт Objectметодом toJSONString, який потім присутній у будь-якому об'єкті, і здійснює його перетворення на рядок формату JSON.
- json-rpc.org (англ.)
Мови розмітки документів
Офісних документів Compound Document Format · OOXML (SpreadsheetML, PresentationML, WordprocessingML) · |
Знайомі з програмуванням люди одразу дізнаються про файли з розширенням JSON. Цей формат – абревіатура термінів JavaScript Object Notation, і він по суті текстовим варіантом обміну даними, що використовується в мові програмування JavaScript. Відповідно, впоратися з відкриттям таких файлів допоможе спеціалізоване ПЗ, або текстові редактори.
Основною особливістю скриптів у форматі JSON є взаємозамінність його на формат XML. Обидва типи є текстові документи, які можна відкривати текстовими процесорами Однак почнемо ми зі спеціалізованого ПЗ.
Спосіб 1: Altova XMLSpy Досить відоме середовище розробки, яке використовують у тому числі й веб-програмісти. Це середовище також генерує файли JSON, тому здатна і відкривати сторонні документи з таким розширенням.
Недоліків у цього ПЗ два. Перший – платна основа розповсюдження. Пробна версія активна 30 днів, проте для її отримання необхідно вказати ім'я та Поштова скринька. Другий – загальна громіздкість: людині, якій просто потрібно відкрити файл, вона може здатися надто навороченою.
Спосіб 2: Notepad++ Багатофункціональний текстовий редактор Notepad++ - перший зі списку придатних для відкриття скриптів у форматі JSON.
Плюсів у Notepad++ неабияк – тут і відображення синтаксису багатьох мов програмування, і підтримка плагінів, і малий розмір… Однак через деякі особливості працює програма неквапливо, особливо якщо відкрити в ній об'ємний документ.
Спосіб 3: AkelPad Неймовірно простий і водночас багатий на можливості текстовий редактор від російського розробника. До підтримуваних ним форматів входить і JSON.
Як і Notepad++, цей варіант блокнота також безкоштовний та підтримує плагіни. Він працює швидше, проте великі та складні файли може не відкрити з першого разу, так що майте на увазі таку особливість.
Спосіб 4: Komodo Edit Безкоштовне ПЗ для написання програмного кодувід компанії Komodo. Відрізняється сучасним інтерфейсом та широкою підтримкою функцій для програмістів.
У програмі, на жаль, відсутня російська. Однак рядового користувача швидше відлякає надлишковий функціонал і незрозумілі елементи інтерфейсу – все-таки цей редактор орієнтований насамперед на програмістів.
Спосіб 5: Sublime Text Ще один представник code-oriented текстових редакторів. Інтерфейс простіше, ніж у колег, проте можливості ті самі. Доступна і портативна версія програми.
На жаль, Sublime Text недоступний російською мовою. Недоліком можна назвати і умовно-безкоштовну модель поширення: вільна версія нічим не обмежена, але іноді з'являється нагадування про необхідність придбання ліцензії.
Спосіб 6: NFOPad Простий блокнот, проте для перегляду документів із розширенням JSON теж підійде.