JSON (англ. JavaScript Object Notation, укр. запис об'єктів JavaScript, вимовляється джéйсон) — це текстовий формат обміну даними між комп'ютерами. JSON базується на тексті, може бути прочитаним людиною. Формат дає змогу описувати об'єкти та інші структури даних. Цей формат використовується переважно для передавання структурованої інформації через мережу (завдяки процесу, що називають серіалізацією).
Розширення файлу: | .json |
---|---|
MIME-тип: | application/json |
Узагальнений ідентифікатор типу: | public.json |
Тип формату: | Data interchange |
Розширений з: | JavaScript |
Стандарт(и): | RFC 7159, ECMA-404 |
Сайт: | json.org |
Розробив і популяризував формат Дуглас Крокфорд.
JSON знайшов своє головне призначення в написанні вебпрограм, а саме при використанні технології AJAX. JSON, що використовується в AJAX, виступає як заміна XML (використовується в AJAX) під час асинхронного пересилання структурованої інформації між клієнтом та сервером. При цьому перевагою JSON перед XML є те, що він дозволяє складні структури в атрибутах, займає менше місця і прямо інтерпретується за допомогою JavaScript в об'єкти.
Історія
JSON з'явився через необхідність обміну даними із сервером у реальному часі без використання плагінів для браузерів, flash-додатків або Java-аплетів, які використовувались скрізь на початку 2000-х років.
Дуглас Крокфорд був тим, хто активно просував новий на той час формат. Він із колегами хотів створити технологію, яка використовувала б можливості звичайного браузера і давала б веброзробникам можливість створювати вебдодатки із постійним двостороннім зв'язком із вебсервером. JSON вперше був використаний в проекті в Communities.com для Cartoon Network, він дозволяв обмінюватися повідомленнями й одночасно маніпулювати DHTML-елементами.
Вебсайт JSON.org було запущено 2002 року. У грудні 2005 року Yahoo! почав переводити деякі зі своїх вебсервісів на роботу з JSON. Google взявся до роботи з технологією у своєму вебпротоколі GData у грудні 2006 року.
Використання
За рахунок своєї лаконічності в порівнянні з XML, формат JSON може бути більш придатним для серіалізації складних структур.
Якщо говорити про вебзастосунки, у такому ключі він доречний у задачах обміну даними як між браузером і сервером (AJAX), так і між самими серверами (програмні HTTP-інтерфейси). Формат JSON так само добре підходить для зберігання складних динамічних структур у реляційних базах даних або файловому кеші.
Приклад використання JSON
var ajaxData = '{"name": "wiki", "fname": "pedia", "rates": [1, 4, 5, 6]}' var ajaxObj = JSON.parse(ajaxData) alert(ajaxObj.name + ajaxObj.rates[2]) /* Виведе «wiki5» */
Синтаксис
JSON будується на двох структурах:
- Набір пар назва/значення. У різних мовах програмування це реалізовано як об'єкт, запис, структура, словник, хеш-таблиця, список із ключем або асоціативним масивом.
- Впорядкований список значень. У багатьох мовах це реалізовано як масив, вектор, список або послідовність.
У JSON використовуються такі їхні форми:
- Об'єкт — це послідовність пар назва/значення. Об'єкт починається з символу
{
і закінчується символом}
. Кожне значення слідує за:
і пари назва/значення відділяються комами. Як значення можуть виступати - Масив — це послідовність змінних. Масив починається символом
[
і закінчується символом]
. Значення відділяються комами. - Змінна може бути рядком (див. нижче) в подвійних лапках, або числом, або логічними true чи false, або null, або об'єктом, або масивом. Ці структури можуть бути вкладені одна в одну.
- Рядок — це послідовність з нуля або більше символів юнікода, обмежена подвійними лапками, з використанням escape-послідовностей, що починаються зі зворотної косої риски
\
. Символи представляються простим рядком.
Тип Рядок (String) дуже схожий на String в мовах C і Java. Число теж дуже схоже на C- або Java-число, за винятком того, що вісімкові та шістнадцяткові формати не використовуються. Пропуски можуть бути вставлені між будь-якими двома лексемами.
Наведений нижче приклад показує JSON представлення об'єкта, що описує людину. В об'єкті є рядкові поля імені і прізвища, об'єкт, що описує адресу, і масив, що містить список телефонів.
{ "firstName": "Іван", "lastName": "Коваленко", "address": { "streetAddress": "вул. Грушевського 14, кв.101", "city": "Київ", "postalCode": 21000 }, "phoneNumbers": [ "044 123-1234", "050 123-4567" ] }
Використання JSON в AJAX
Наступний фрагмент коду JavaScript показує, як клієнт може використати XMLHttpRequest для запиту об'єктів у форматі JSON із сервера. Серверна частина коду пропущена, вона просто повертає на запит URL рядок у JSON форматі.
var the_object; var http_request = new 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( "There was a problem with the URL." ); } http_request = null; } };
Треба відзначити, що тут використання XMLHttpRequest не є крос-браузерним (за деталями звертайтеся на сторінку XMLHttpRequest), і код зазнаватиме незначних модифікацій у різних версіях оглядачів Internet Explorer, Opera, Safari або Mozilla. Використання запиту XMLHttpRequest обмежено правилом одного джерела (same origin policy): URL, що відповідає на запит, має посилатися на той же сайт, що обслуговує сторінку, що ініціювала запит.
Оглядачі можуть також використовувати тег <iframe>
для асинхронного запиту JSON-даних в кросс-браузерному варіанті, або використати просте перенаправлення <form action="url_to_cgi_script" target="name_of_hidden_iframe">
. Такий підхід був поширений до приходу популярного нині запиту XMLHttpRequest.
Динамічний тег <script>
також можна використати для підвантаження JSON-даних. Ця техніка можлива, щоб обійти надто суворе правило одного джерела, але вона не є безпечною. Запит JSONRequest пропонується, як безпечніша альтернатива.
Питання безпеки
Хоча JSON призначений для передавання даних в серіалізованому вигляді, його синтаксис відповідає синтаксису JavaScript і це створює низку проблем безпеки. Часто для обробки даних, отриманих від зовнішнього джерела у форматі JSON, до них застосовується функція eval() без якої-небудь попередньої перевірки.
JavaScript eval()
Оскільки JSON представляється синтаксично правильним фрагментом коду JavaScript, природним способом розбору JSON-даних в JavaScript-програмі є використання вбудованої в JavaScript функції eval(), яка призначена для обчислення JavaScript-виразів. При цьому підході відпадає необхідність у використанні додаткових парсерів.
Техніка використання eval()
робить систему вразливою, якщо джерело JSON-даних, що використовуються, не відноситься до надійних. Такими даними може виступати шкідливий JavaScript-код для атак за допомогою ін'єкції коду. За допомогою цієї вразливості можливо здійснювати крадіжку даних, підробку автентифікації. Проте, вразливість можна усунути за рахунок використання додаткових засобів перевірки даних на коректність. Наприклад, до виконання eval()
отримані від зовнішнього джерела дані можуть перевірятися за допомогою регулярних виразів. У RFC, що визначає JSON пропонується використовувати такий код для перевірки його відповідності формату JSON
const my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test( text.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + testedData + ')');
Як безпечніша альтернатива eval()
була запропонована нова функція parseJSON(), здатна обробляти тільки JSON-дані. Вона була представлена в четвертій версії стандарту ECMAScript і описана в статті під назвою «JSON: Знежирена альтернатива XML».
Цей розділ потребує доповнення. (травень 2018) |
Для синтаксичного розбору JSON може використовуватися функція JSON.parse
.
Вбудований JSON
Останні[] версії веббраузерів мають вбудовану підтримку JSON і здатні його обробляти без виклику функції eval()
, що призводить до описаної проблеми. Обробка JSON у такому разі зазвичай здійснюється швидше. Так у червні 2009 року вбудовану підтримку JSON мали такі браузери:
- Mozilla Firefox 3.5+, SeaMonkey 2, та Thunderbird 3
- Microsoft Internet Explorer 8Native JSON in IE8. Архів оригіналу за 12 лютого 2012. Процитовано 5 серпня 2009. (англ.)
- Opera 10.5+
- Браузери, засновані на WebKit (наприклад, Google Chrome, Apple Safari)
Принаймні дві популярні бібліотеки JavaScript використовують вбудований JSON у разі його доступності:
Підробка крос-доменного запиту
Непродумане використання JSON робить сайти вразливими до підробки міжсайтових запитів (CSRF або XSRF). Оскільки тег <script>
допускає використання джерела, що не належить до того ж домену, що і використовуваний ресурс, це дозволяє виконувати код даних, представлених у форматі JSON, в контексті довільної сторінки, що робить можливою компрометацію паролів або іншої конфіденційної інформації користувачів, що пройшли авторизацію на іншому сайті.
Це є проблемою тільки у разі вмісту в JSON-даних конфіденційної інформації, яка може бути компрометована третьою стороною і якщо сервер розраховує на політику одного джерела, блокуючи доступ до даних при виявленні зовнішнього запиту. Це не є проблемою, якщо сервер визначає допустимість запиту, надаючи дані тільки у разі його коректності. HTTP cookie не можна використовувати для визначення цього. Виключне використання HTTP cookie використовується підробкою міжсайтових запитів.
Розширення
JSONP
JSONP або «JSON з підкладкою» є розширенням JSON, коли назва функції зворотного виклику вказується як вхідний аргумент. Спочатку ідея була запропонована в блозі MacPython в 2005 році, і в наш час[] використовується багатьма Web 2.0 застосунками, такими, як Dojo Toolkit Applications, Google Toolkit Applications і zanox Web Services. Подальші розширення цього протоколу були запропоновані з урахуванням введення додаткових аргументів, як, наприклад, у разі JSONPP за підтримки вебсервісів .
Оскільки JSONP використовує скрипт-теги, виклики по суті відкриті світові. З цієї причини JSONP може бути недоречними для зберігання конфіденційних даних.
Включення скриптових тегів від віддалених сайтів дозволяє їм передати будь-який контент на сайті. Якщо віддалений сайт має вразливості, які дозволяють виконати ін'єкції JavaScript, то початковий сайт також може бути ними зачеплений.
BSON
BSON — це бінарна форма представлення простих структур даних і асоціативних масивів (які називають об'єктами або документами). Назва «BSON» заснована на визначенні JSON і неофіційно означає «Binary JSON» (бінарний JSON).
HOCON
HOCON ("Human-Optimized Config Object Notation") - формат для [en], який є надмножиною JSON.
- Перш за все використовується разом з фреймворком Play, і розробляється в Lightbend Inc..
- Також підтримується як формат конфігурації для .NET проектів через Akka.NET і Puppet.
- TIBCO Streaming: HOCON є основним форматом конфігураційного файлу для продуктів сімейства TIBCO Streaming (StreamBase, LiveView, і Artifact Management Server) починаючи з релізу TIBCO Streaming 10.
- Це також основний формат конфігураційного файлу для декількох підсистем Exabeam Advanced Analytics.
- Jitsi використовує його як "нову" систему конфігурації та файли .properties як резервний варіант
JSON Reference
Стандарт JSON не описує посилання на інші об'єкти або частини, але існує чернетка стандарту IETF для посилань на об'єкти на основі JSON. Посилання дозволяють здійснювати трансклюзію — вставляти одні документи в інші.
JSON Reference — це JSON-об'єкт з ключем $ref
(всі інші ключі ігноруються) і значенням стрічкового типу що містить URI, наприклад:
{ "$ref": "http://example.com/example.json#/foo/bar" }
Якщо URI містить [en] (в прикладі вище "/foo/bar"
), він інтерпретується як JSON Pointer.
Модуль dojox.json.ref
в Dojo toolkit, забезпечує підтримку декількох форм JSON Reference.
JSON Pointer
Цей розділ потребує доповнення. (травень 2018) |
https://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-04 [ 14 грудня 2018 у Wayback Machine.]
Порівняння з іншими форматами
Детальніше: [en]
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, RELAX NG, . JSON Schema — самоописова мова: при її використанні для обробки даних і опису їхньої допустимості можуть використовуватись однакові інструменти серіалізації/десеріалізації.
Див. також
- jq — мова програмування розроблена для роботи з JSON
Виноски
- (англ.). 8 червня 2021. Архів оригіналу за 24 червня 2021. Процитовано 14 лист. 2014р.
- RFC 4627
- Douglas Crockford. JSON: The Fat-Free Alternative to XML. Архів оригіналу за 12 лютого 2012. Процитовано 19 серпня 2009.
- . Архів оригіналу за 26 липня 2019. Процитовано 27 липня 2019.
- . Архів оригіналу за 5 березня 2012. Процитовано 19 серпня 2009. (англ.)
- Web specifications supported in Opera Presto 2.5. 10 березня 2010. Архів оригіналу за 12 лютого 2012. Процитовано 29 березня 2010.(англ.)
- . Архів оригіналу за 21 січня 2019. Процитовано 5 серпня 2009. (англ.)
- Ticket #4429. Архів оригіналу за 12 лютого 2012. Процитовано 19 серпня 2009. (англ.)
- Ticket #8111. Архів оригіналу за 12 лютого 2012. Процитовано 19 серпня 2009. (англ.)
- Advanced Web Attack Techniques using GMail [ 2013-02-12 у Wayback Machine.] — Джеремі Гроссмен, WhiteHat Security (англ.)
- from __future__ import * » Remote JSON — JSONP. Bob.pythonmac.org. Архів оригіналу за 12 лютого 2012. Процитовано 8 вересня 2008.
- GWT Tutorial: How to Read Web Services Client-Side with JSONP. Архів оригіналу за 17 січня 2013. Процитовано 19 серпня 2009.
- Almeida Jonas. JSON, JSONP, JSONPP?. — S3DB, . з джерела 15 лютого 2017. Процитовано 2009-04-26.
- RIAspot. . Архів оригіналу за 5 грудня 2008. Процитовано 19 серпня 2009.
- config/HOCON.md at master · lightbend/config. GitHub (англ.). Процитовано 5 серпня 2021.
- Config File - 2.5.x. www.playframework.com. Процитовано 5 серпня 2021.
- Akka.NET HOCON Docs
- Akka.NET Documentation | Akka.NET Documentation. getakka.net. Процитовано 5 серпня 2021.
- . Архів оригіналу за 11 лютого 2017. Процитовано 27 травня 2023.
- StreamBase Documentation. docs.streambase.com. Процитовано 5 серпня 2021.
- Configuration Guide. docs.streambase.com. Процитовано 5 серпня 2021.
- StreamBase New and Noteworthy Archive. docs.streambase.com. Процитовано 5 серпня 2021.
- . Архів оригіналу за 20 жовтня 2020. Процитовано 27 травня 2023.
- JITSI Project. Config phase 1. GitHub. Процитовано 16 лютого 2021.
- JITSI Project. reference.conf. GitHub. Процитовано 16 лютого 2021.
- Zyp, Kris (16 вересня 2012). Bryan, Paul C. (ред.). . Internet Engineering Task Force. Архів оригіналу за 19 вересня 2018. Процитовано 25 травня 2018.
- JSON referencing in Dojo. Архів оригіналу за 12 лютого 2012. Процитовано 19 серпня 2009.
- . Архів оригіналу за 16 травня 2008. Процитовано 5 серпня 2009.
- YAML is JSON [ 14 вересня 2008 у Wayback Machine.], RedHanded, 08 апреля 2005.
- Json.Com. . Архів оригіналу за 14 травня 2008. Процитовано 5 серпня 2009.
Посилання
- Сайт json.org [ 23 лютого 2011 у Wayback Machine.]
- RFC 7159, поточна формальна специфікація JSON
- (англ.)
- wxJSON [ 10 березня 2009 у Wayback Machine.] — бібліотека для обробки JSON в wxWidgets.
Підручники
- (англ.) Порівнюємо використання XML, об'єкти JavaScript і JSON
- Пришвидчення AJAX з JSON [ 17 березня 2012 у Wayback Machine.] Приклади, де JSON простіше за XML.
- Введення до JSON від Daniel Rubio [ 11 жовтня 2007 у Wayback Machine.]
- Простий курс і бібліотеки кодів
- Прискорення розробки вебклієнтів на AJAX з JSON та GWT [ 25 жовтня 2007 у Wayback Machine.] Простий підручник і код для використання JSON з GWT
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ne plutati z ISON JSON angl JavaScript Object Notation ukr zapis ob yektiv JavaScript vimovlyayetsya dzhejson ce tekstovij format obminu danimi mizh komp yuterami JSON bazuyetsya na teksti mozhe buti prochitanim lyudinoyu Format daye zmogu opisuvati ob yekti ta inshi strukturi danih Cej format vikoristovuyetsya perevazhno dlya peredavannya strukturovanoyi informaciyi cherez merezhu zavdyaki procesu sho nazivayut serializaciyeyu JSONRozshirennya fajlu jsonMIME tip application jsonUzagalnenij identifikator tipu public jsonTip formatu Data interchangeRozshirenij z JavaScriptStandart i RFC 7159 ECMA 404Sajt json org Rozrobiv i populyarizuvav format Duglas Krokford JSON znajshov svoye golovne priznachennya v napisanni vebprogram a same pri vikoristanni tehnologiyi AJAX JSON sho vikoristovuyetsya v AJAX vistupaye yak zamina XML vikoristovuyetsya v AJAX pid chas asinhronnogo peresilannya strukturovanoyi informaciyi mizh kliyentom ta serverom Pri comu perevagoyu JSON pered XML ye te sho vin dozvolyaye skladni strukturi v atributah zajmaye menshe miscya i pryamo interpretuyetsya za dopomogoyu JavaScript v ob yekti IstoriyaJSON z yavivsya cherez neobhidnist obminu danimi iz serverom u realnomu chasi bez vikoristannya plaginiv dlya brauzeriv flash dodatkiv abo Java apletiv yaki vikoristovuvalis skriz na pochatku 2000 h rokiv Duglas Krokford buv tim hto aktivno prosuvav novij na toj chas format Vin iz kolegami hotiv stvoriti tehnologiyu yaka vikoristovuvala b mozhlivosti zvichajnogo brauzera i davala b vebrozrobnikam mozhlivist stvoryuvati vebdodatki iz postijnim dvostoronnim zv yazkom iz vebserverom JSON vpershe buv vikoristanij v proekti v Communities com dlya Cartoon Network vin dozvolyav obminyuvatisya povidomlennyami j odnochasno manipulyuvati DHTML elementami Vebsajt JSON org bulo zapusheno 2002 roku U grudni 2005 roku Yahoo pochav perevoditi deyaki zi svoyih vebservisiv na robotu z JSON Google vzyavsya do roboti z tehnologiyeyu u svoyemu vebprotokoli GData u grudni 2006 roku VikoristannyaZa rahunok svoyeyi lakonichnosti v porivnyanni z XML format JSON mozhe buti bilsh pridatnim dlya serializaciyi skladnih struktur Yaksho govoriti pro vebzastosunki u takomu klyuchi vin dorechnij u zadachah obminu danimi yak mizh brauzerom i serverom AJAX tak i mizh samimi serverami programni HTTP interfejsi Format JSON tak samo dobre pidhodit dlya zberigannya skladnih dinamichnih struktur u relyacijnih bazah danih abo fajlovomu keshi Priklad vikoristannya JSONvar ajaxData name wiki fname pedia rates 1 4 5 6 var ajaxObj JSON parse ajaxData alert ajaxObj name ajaxObj rates 2 Vivede wiki5 SintaksisJSON buduyetsya na dvoh strukturah Nabir par nazva znachennya U riznih movah programuvannya ce realizovano yak ob yekt zapis struktura slovnik hesh tablicya spisok iz klyuchem abo asociativnim masivom Vporyadkovanij spisok znachen U bagatoh movah ce realizovano yak masiv vektor spisok abo poslidovnist U JSON vikoristovuyutsya taki yihni formi Ob yekt ce poslidovnist par nazva znachennya Ob yekt pochinayetsya z simvolu i zakinchuyetsya simvolom Kozhne znachennya sliduye za i pari nazva znachennya viddilyayutsya komami Yak znachennya mozhut vistupati Masiv ce poslidovnist zminnih Masiv pochinayetsya simvolom i zakinchuyetsya simvolom Znachennya viddilyayutsya komami Zminna mozhe buti ryadkom div nizhche v podvijnih lapkah abo chislom abo logichnimi true chi false abo null abo ob yektom abo masivom Ci strukturi mozhut buti vkladeni odna v odnu Ryadok ce poslidovnist z nulya abo bilshe simvoliv yunikoda obmezhena podvijnimi lapkami z vikoristannyam escape poslidovnostej sho pochinayutsya zi zvorotnoyi kosoyi riski Simvoli predstavlyayutsya prostim ryadkom Tip Ryadok String duzhe shozhij na String v movah C i Java Chislo tezh duzhe shozhe na C abo Java chislo za vinyatkom togo sho visimkovi ta shistnadcyatkovi formati ne vikoristovuyutsya Propuski mozhut buti vstavleni mizh bud yakimi dvoma leksemami Navedenij nizhche priklad pokazuye JSON predstavlennya ob yekta sho opisuye lyudinu V ob yekti ye ryadkovi polya imeni i prizvisha ob yekt sho opisuye adresu i masiv sho mistit spisok telefoniv firstName Ivan lastName Kovalenko address streetAddress vul Grushevskogo 14 kv 101 city Kiyiv postalCode 21000 phoneNumbers 044 123 1234 050 123 4567 Vikoristannya JSON v AJAXNastupnij fragment kodu JavaScript pokazuye yak kliyent mozhe vikoristati XMLHttpRequest dlya zapitu ob yektiv u formati JSON iz servera Serverna chastina kodu propushena vona prosto povertaye na zapit URL ryadok u JSON formati var the object var http request new 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 There was a problem with the URL http request null Treba vidznachiti sho tut vikoristannya XMLHttpRequest ne ye kros brauzernim za detalyami zvertajtesya na storinku XMLHttpRequest i kod zaznavatime neznachnih modifikacij u riznih versiyah oglyadachiv Internet Explorer Opera Safari abo Mozilla Vikoristannya zapitu XMLHttpRequest obmezheno pravilom odnogo dzherela same origin policy URL sho vidpovidaye na zapit maye posilatisya na toj zhe sajt sho obslugovuye storinku sho iniciyuvala zapit Oglyadachi mozhut takozh vikoristovuvati teg lt iframe gt dlya asinhronnogo zapitu JSON danih v kross brauzernomu varianti abo vikoristati proste perenapravlennya lt form action url to cgi script target name of hidden iframe gt Takij pidhid buv poshirenij do prihodu populyarnogo nini zapitu XMLHttpRequest Dinamichnij teg lt script gt takozh mozhna vikoristati dlya pidvantazhennya JSON danih Cya tehnika mozhliva shob obijti nadto suvore pravilo odnogo dzherela ale vona ne ye bezpechnoyu Zapit JSONRequest proponuyetsya yak bezpechnisha alternativa Pitannya bezpekiHocha JSON priznachenij dlya peredavannya danih v serializovanomu viglyadi jogo sintaksis vidpovidaye sintaksisu JavaScript i ce stvoryuye nizku problem bezpeki Chasto dlya obrobki danih otrimanih vid zovnishnogo dzherela u formati JSON do nih zastosovuyetsya funkciya eval bez yakoyi nebud poperednoyi perevirki JavaScript eval Oskilki JSON predstavlyayetsya sintaksichno pravilnim fragmentom kodu JavaScript prirodnim sposobom rozboru JSON danih v JavaScript programi ye vikoristannya vbudovanoyi v JavaScript funkciyi eval yaka priznachena dlya obchislennya JavaScript viraziv Pri comu pidhodi vidpadaye neobhidnist u vikoristanni dodatkovih parseriv Tehnika vikoristannya eval robit sistemu vrazlivoyu yaksho dzherelo JSON danih sho vikoristovuyutsya ne vidnositsya do nadijnih Takimi danimi mozhe vistupati shkidlivij JavaScript kod dlya atak za dopomogoyu in yekciyi kodu Za dopomogoyu ciyeyi vrazlivosti mozhlivo zdijsnyuvati kradizhku danih pidrobku avtentifikaciyi Prote vrazlivist mozhna usunuti za rahunok vikoristannya dodatkovih zasobiv perevirki danih na korektnist Napriklad do vikonannya eval otrimani vid zovnishnogo dzherela dani mozhut pereviryatisya za dopomogoyu regulyarnih viraziv U RFC sho viznachaye JSON proponuyetsya vikoristovuvati takij kod dlya perevirki jogo vidpovidnosti formatu JSON const my JSON object 0 9 Eaeflnr u n r t test text replace g amp amp eval testedData Yak bezpechnisha alternativa eval bula zaproponovana nova funkciya parseJSON zdatna obroblyati tilki JSON dani Vona bula predstavlena v chetvertij versiyi standartu ECMAScript i opisana v statti pid nazvoyu JSON Znezhirena alternativa XML Cej rozdil potrebuye dopovnennya traven 2018 Dlya sintaksichnogo rozboru JSON mozhe vikoristovuvatisya funkciya JSON parse Vbudovanij JSON Ostanni koli versiyi vebbrauzeriv mayut vbudovanu pidtrimku JSON i zdatni jogo obroblyati bez vikliku funkciyi eval sho prizvodit do opisanoyi problemi Obrobka JSON u takomu razi zazvichaj zdijsnyuyetsya shvidshe Tak u chervni 2009 roku vbudovanu pidtrimku JSON mali taki brauzeri Mozilla Firefox 3 5 SeaMonkey 2 ta Thunderbird 3 Microsoft Internet Explorer 8Native JSON in IE8 Arhiv originalu za 12 lyutogo 2012 Procitovano 5 serpnya 2009 angl Opera 10 5 Brauzeri zasnovani na WebKit napriklad Google Chrome Apple Safari Prinajmni dvi populyarni biblioteki JavaScript vikoristovuyut vbudovanij JSON u razi jogo dostupnosti jQuery Dojo Pidrobka kros domennogo zapitu Neprodumane vikoristannya JSON robit sajti vrazlivimi do pidrobki mizhsajtovih zapitiv CSRF abo XSRF Oskilki teg lt script gt dopuskaye vikoristannya dzherela sho ne nalezhit do togo zh domenu sho i vikoristovuvanij resurs ce dozvolyaye vikonuvati kod danih predstavlenih u formati JSON v konteksti dovilnoyi storinki sho robit mozhlivoyu komprometaciyu paroliv abo inshoyi konfidencijnoyi informaciyi koristuvachiv sho projshli avtorizaciyu na inshomu sajti Ce ye problemoyu tilki u razi vmistu v JSON danih konfidencijnoyi informaciyi yaka mozhe buti komprometovana tretoyu storonoyu i yaksho server rozrahovuye na politiku odnogo dzherela blokuyuchi dostup do danih pri viyavlenni zovnishnogo zapitu Ce ne ye problemoyu yaksho server viznachaye dopustimist zapitu nadayuchi dani tilki u razi jogo korektnosti HTTP cookie ne mozhna vikoristovuvati dlya viznachennya cogo Viklyuchne vikoristannya HTTP cookie vikoristovuyetsya pidrobkoyu mizhsajtovih zapitiv RozshirennyaJSONP JSONP abo JSON z pidkladkoyu ye rozshirennyam JSON koli nazva funkciyi zvorotnogo vikliku vkazuyetsya yak vhidnij argument Spochatku ideya bula zaproponovana v blozi MacPython v 2005 roci i v nash chas koli vikoristovuyetsya bagatma Web 2 0 zastosunkami takimi yak Dojo Toolkit Applications Google Toolkit Applications i zanox Web Services Podalshi rozshirennya cogo protokolu buli zaproponovani z urahuvannyam vvedennya dodatkovih argumentiv yak napriklad u razi JSONPP za pidtrimki vebservisiv Oskilki JSONP vikoristovuye skript tegi vikliki po suti vidkriti svitovi Z ciyeyi prichini JSONP mozhe buti nedorechnimi dlya zberigannya konfidencijnih danih Vklyuchennya skriptovih tegiv vid viddalenih sajtiv dozvolyaye yim peredati bud yakij kontent na sajti Yaksho viddalenij sajt maye vrazlivosti yaki dozvolyayut vikonati in yekciyi JavaScript to pochatkovij sajt takozh mozhe buti nimi zacheplenij BSON Dokladnishe BSON BSON ce binarna forma predstavlennya prostih struktur danih i asociativnih masiviv yaki nazivayut ob yektami abo dokumentami Nazva BSON zasnovana na viznachenni JSON i neoficijno oznachaye Binary JSON binarnij JSON HOCON HOCON Human Optimized Config Object Notation format dlya en yakij ye nadmnozhinoyu JSON Persh za vse vikoristovuyetsya razom z frejmvorkom Play i rozroblyayetsya v Lightbend Inc Takozh pidtrimuyetsya yak format konfiguraciyi dlya NET proektiv cherez Akka NET i Puppet TIBCO Streaming HOCON ye osnovnim formatom konfiguracijnogo fajlu dlya produktiv simejstva TIBCO Streaming StreamBase LiveView i Artifact Management Server pochinayuchi z relizu TIBCO Streaming 10 Ce takozh osnovnij format konfiguracijnogo fajlu dlya dekilkoh pidsistem Exabeam Advanced Analytics Jitsi vikoristovuye jogo yak novu sistemu konfiguraciyi ta fajli properties yak rezervnij variantJSON ReferenceStandart JSON ne opisuye posilannya na inshi ob yekti abo chastini ale isnuye chernetka standartu IETF dlya posilan na ob yekti na osnovi JSON Posilannya dozvolyayut zdijsnyuvati transklyuziyu vstavlyati odni dokumenti v inshi JSON Reference ce JSON ob yekt z klyuchem ref vsi inshi klyuchi ignoruyutsya i znachennyam strichkovogo tipu sho mistit URI napriklad ref http example com example json foo bar Yaksho URI mistit en v prikladi vishe foo bar vin interpretuyetsya yak JSON Pointer Modul dojox json ref v Dojo toolkit zabezpechuye pidtrimku dekilkoh form JSON Reference JSON Pointer Cej rozdil potrebuye dopovnennya traven 2018 https tools ietf org html draft ietf appsawg json pointer 04 14 grudnya 2018 u Wayback Machine Porivnyannya z inshimi formatamiDetalnishe en YAML Yak funkcionalno tak i sintaksichno JSON ye pidmnozhinoyu movi YAML Zokrema specifikaciya YAML 1 2 ukazuye sho bud yakij fajl u formati JSON ye korektnim fajlom u formati YAML Najposhirenishij parser YAML zdatnij obroblyati j JSON Specifikaciya YAML do versiyi 1 2 ne povnistyu pokrivala JSON nasampered cherez vidsutnist ridnoyi pidtrimki UTF 32 v YAML a takozh vimogi propusku pislya rozdilnika komi Krim togo specifikaciya JSON vklyuchala komentari v stili Najvazhlivishoyu vidminnistyu YAML ye nabir rozshiren sintaksisu dlya yakih nemaye analogiv u JSON Relyacijnij YAML pidtrimuye relyacijni dani v YAML dokumenti mozhna posilatisya na yakir sho zustrivsya ranishe u fajli potoci Takim chinom mozhna predstaviti rekursivni strukturi Rozshiryuvanij YAML pidtrimuye rozshiryuvani tipi danih krim primitiviv tobto ryadkiv chisel logichnih zminnih Bloki u YAML dostupnij blokovij sintaksis z vidstupami vin daye zmogu opisati strukturovani dani bez vikoristannya zajvih simvoliv vsilyakih duzhok lapok tosho JSON SchemaJSON Schema odna z mov opisu strukturi JSON dokumenta Vikoristovuye sintaksis JSON Bazuyetsya na koncepciyah XML Schema RELAX NG JSON Schema samoopisova mova pri yiyi vikoristanni dlya obrobki danih i opisu yihnoyi dopustimosti mozhut vikoristovuvatis odnakovi instrumenti serializaciyi deserializaciyi Div takozhjq mova programuvannya rozroblena dlya roboti z JSONVinoski angl 8 chervnya 2021 Arhiv originalu za 24 chervnya 2021 Procitovano 14 list 2014r RFC 4627 Douglas Crockford JSON The Fat Free Alternative to XML Arhiv originalu za 12 lyutogo 2012 Procitovano 19 serpnya 2009 Arhiv originalu za 26 lipnya 2019 Procitovano 27 lipnya 2019 Arhiv originalu za 5 bereznya 2012 Procitovano 19 serpnya 2009 angl Web specifications supported in Opera Presto 2 5 10 bereznya 2010 Arhiv originalu za 12 lyutogo 2012 Procitovano 29 bereznya 2010 angl Arhiv originalu za 21 sichnya 2019 Procitovano 5 serpnya 2009 angl Ticket 4429 Arhiv originalu za 12 lyutogo 2012 Procitovano 19 serpnya 2009 angl Ticket 8111 Arhiv originalu za 12 lyutogo 2012 Procitovano 19 serpnya 2009 angl Advanced Web Attack Techniques using GMail 2013 02 12 u Wayback Machine Dzheremi Grossmen WhiteHat Security angl from future import Remote JSON JSONP Bob pythonmac org Arhiv originalu za 12 lyutogo 2012 Procitovano 8 veresnya 2008 GWT Tutorial How to Read Web Services Client Side with JSONP Arhiv originalu za 17 sichnya 2013 Procitovano 19 serpnya 2009 Almeida Jonas JSON JSONP JSONPP S3DB z dzherela 15 lyutogo 2017 Procitovano 2009 04 26 RIAspot Arhiv originalu za 5 grudnya 2008 Procitovano 19 serpnya 2009 config HOCON md at master lightbend config GitHub angl Procitovano 5 serpnya 2021 Config File 2 5 x www playframework com Procitovano 5 serpnya 2021 Akka NET HOCON Docs Akka NET Documentation Akka NET Documentation getakka net Procitovano 5 serpnya 2021 Arhiv originalu za 11 lyutogo 2017 Procitovano 27 travnya 2023 StreamBase Documentation docs streambase com Procitovano 5 serpnya 2021 Configuration Guide docs streambase com Procitovano 5 serpnya 2021 StreamBase New and Noteworthy Archive docs streambase com Procitovano 5 serpnya 2021 Arhiv originalu za 20 zhovtnya 2020 Procitovano 27 travnya 2023 JITSI Project Config phase 1 GitHub Procitovano 16 lyutogo 2021 JITSI Project reference conf GitHub Procitovano 16 lyutogo 2021 Zyp Kris 16 veresnya 2012 Bryan Paul C red Internet Engineering Task Force Arhiv originalu za 19 veresnya 2018 Procitovano 25 travnya 2018 JSON referencing in Dojo Arhiv originalu za 12 lyutogo 2012 Procitovano 19 serpnya 2009 Arhiv originalu za 16 travnya 2008 Procitovano 5 serpnya 2009 YAML is JSON 14 veresnya 2008 u Wayback Machine RedHanded 08 aprelya 2005 Json Com Arhiv originalu za 14 travnya 2008 Procitovano 5 serpnya 2009 PosilannyaSajt json org 23 lyutogo 2011 u Wayback Machine RFC 7159 potochna formalna specifikaciya JSON angl wxJSON 10 bereznya 2009 u Wayback Machine biblioteka dlya obrobki JSON v wxWidgets Pidruchniki angl Porivnyuyemo vikoristannya XML ob yekti JavaScript i JSON Prishvidchennya AJAX z JSON 17 bereznya 2012 u Wayback Machine Prikladi de JSON prostishe za XML Vvedennya do JSON vid Daniel Rubio 11 zhovtnya 2007 u Wayback Machine Prostij kurs i biblioteki kodiv Priskorennya rozrobki vebkliyentiv na AJAX z JSON ta GWT 25 zhovtnya 2007 u Wayback Machine Prostij pidruchnik i kod dlya vikoristannya JSON z GWT