JSON (JavaScript Object Notation, об’єктна нотація JavaScript) — формат подання структурованих даних, що використовується для передачі даних через Інтернет.
По суті формат JSON являє собою звичайну рядок.
синтаксис JSON
Синтаксис JSON досить малий, він включає в себе тільки опис того, як виглядають передані дані.
Типи даних JSON
У JSON типи даних можна розділити на дві категорії: прості і складні.
- string — текстові рядки (зазвичай їх називають просто — рядки)
- number — числа
- boolean — логічні (булеві) значення
- null
До складних типів відносяться:
- object — об’єкти
- array — масиви
Синтаксис JSON запозичений з JavaScript, тому для представлення значень простих і складних типів використовується той же синтаксис, що і в JavaScript.
прості значення
найпростіший приклад JSON-коду — будь-яке значення простого типу:
5 2.3 «Hello!» true null
У JSON рядки повинні бути укладені тільки в подвійні лапки. Використання одинарних лапок призводить до синтаксичну помилку.
об’єкти
Об’єкт JSON є укладений у фігурні дужки список з нуля або більше властивостей (пар «ім’я»: значення), розділених комами. Імена властивостей об’єктів обов’язково повинні бути укладені в подвійні лапки. Відсутність подвійних лапок або використання одинарних лапок в імені властивості є помилкою. Властивості можуть містити значення будь-якого типу (простого або складного):
( «Name»: «Гомер», «age»: 40, «work»: ( «place»: «Атомна станція», «location»: «Спрінгфілд»))
масиви
Масив JSON є укладений у квадратні дужки список з нуля або більше значень, розділених комами. Масив може містити значення будь-якого типу (простого або складного):
[( «Name»: «Гомер», «age»: 40, «work»: ( «place»: «Атомна станція», «location»: «Спрінгфілд»), «children»: [ «Барт», «Ліза «,» Мегі «]), (» name «:» Мардж «,» age «: 37,» work «: (» place «:» Будинок «,» location «:» Спрінгфілд «),» children «: [ «Барт», «Ліза», «Мегі»])]
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:
На додаток до надмірності коду, по суті запис даних зайняла в два рази більше місця, 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 Website
Файли JSON використовуються для зберігання структур простих масивів даних за допомогою формату, заснованого на тексті, який може прочитати людина. Спочатку файли JSON були тісно пов’язані з мовою програмування JavaScript, проте внаслідок того, що в наразі цей формат підтримує велику кількість програмних API, його можна розглядати в якості формату, який не прив’язаний ні до одного з мов програмування. Дана альтернатива формату XML найбільш часто використовується веб-додатками Ajax.
Технічні відомості про файли JSON
Файли JSON використовуються в якості файлів для обміну даними. Такий обмін часто відбувається між комп’ютерами, підключеними через Інтернет. Таким чином, дуже рідко файли з розширенням JSON зберігаються на жорсткому диску комп’ютера. Деякі додатки, проте, все ще використовують цей формат. Наприклад, дані профілю Google+ зберігаються і завантажуються в форматі JSON, а веб-браузер Mozilla Firefox використовує файли цього формату для зберігання резервних копій закладок.
Додаткова інформація про формат JSON
Розширення файлу | .json |
Категорія файлів | |
Файл-приклад | (0,57 KiB) |
пов’язані програми | Microsoft Notepad Microsoft WordPad Notepad ++ Mozilla Firefox |
«+ Data [i] .birthday +» |
«;) Htmlstr \u003d»
«; $ (» Div.info «). Html (htmlstr); // в div з класом info виводимо вийшла таблицю з даними));
На сервері скрипт get-info.php до якого робиться ajax-запит, може бути, наприклад, таким:
$ User_info \u003d array (); // створюємо масив з даними $ user_info \u003d array ( «fio» \u003d\u003e «Іванов Сергій», «birthday» \u003d\u003e «09.03.1975»); $ User_info \u003d array ( «fio» \u003d\u003e «Петров Олексій», «birthday» \u003d\u003e «18.09.1983»); echo json_encode ($ user_info); exit;
У цьому прикладі JSON-рядок, яка була передана з сервера в браузер була такою:
[( «Fio»: «Іванов Сергій», «birthday»: «09.03.1975»), ( «fio»: «Петров Олексій», «birthday»: «18.09.1983»)]
Я спеціально не став показувати рядок у вигляді «дерева», тому що вона передається саме в такому вигляді. І як ви можете оцінити, запис даних в форматі JSON вийшла дуже компактною, А це означає, що передача цих даних від сервера до браузера буде практично миттєвою.
2. Запис складних структур даних в базу даних.
Іноді бувають ситуації, коли заводити ще одну таблицю в базі даних не доцільно, щоб зберегти різні дані. Припустимо, припустимо, у зареєстрованого на сайті користувача є можливість зробити настройку кольору фону і кольору тексту.
Замість того, щоб заводити ще одну таблицю заради 2-х налаштувань, можна просто в таблиці зі списком користувачів зробити текстовий стовпець, в який поміщати дані установки можуть бути. Тоді запит оновлення налаштувань, може наприклад, бути таким:
UPDATE users SET settings \u003d «(» background-color «:» # FFFFFF «,» text-color «:» # 000000 «)» WHERE user_id \u003d 10
В майбутньому, отримавши з таблиці users інформацію, скрипт php може легко перетворити їх назад в масив з настройками. Наприклад, якщо змінна $ user_info містить дані, отримані за користувачу з таблиці users, отримати масив з настройками дуже просто:
$ Settings \u003d json_decode ($ user_info [ «settings»], true); echo «Колір фону \u003d». $ settings [ «background-color»]; echo «Колір тексту \u003d». $ settings [ «text-color»];
У форматі JSON, можна так само, наприклад, записати в базу даних які опції товарів вибрав покупець.
( «15»: [ «45», «47»], «18»: «52») // у опції 15 обрані значення 45 і 47, а у опції 18 вибрано значення 52
Впринципі, можна навіть і весь вміст кошика записати в форматі JSON, наприклад, так:
( «User_id»: 10, «session_id»: «2c2l3h4ii271aojentejtdcmh3», «products»: [( «product_id»: 15, «options»: ( «15»:, «18»: 52), «quantity»: 1, «price»: 1500), ( «product_id»: 16, «options»: ( «15»:, «18»: 51), «quantity»: 2, «price» 1000)])
В зазвичай не деревовидному вигляді ця JSON-рядок буде такий:
( «User_id»: 10, «session_id»: «2c2l3h4ii271aojentejtdcmh3», «products»: [( «product_id»: 15, «options» 🙁 «15»:, «18»: 52), «quantity»: 1, «price»: 1500), ( «product_id»: 16, «options» 🙁 «15»:, «18»: 51), «quantity»: 2, «price» 1000)])
Таким чином, як видно з прикладів, в форматі JSON можна зберігати і передавати будь-яку інформацію.
Що складаються з пар атрибут — значення. Це найбільш поширений формат даних, який використовується для асинхронного зв’язку між браузером і сервером, в значній мірі заміняє XML (використовується AJAX).
JSON — це незалежний від мови формат даних, який був отриманий з JavaScript. З 2017 року багато мови програмування використовують код для генерації та аналізу даних в тільки в ньому. Імена файлів JSON використовують расшіреніе.json.
Історія створення
Спочатку формат JSON розробив Дуглас Крокфорд на початку нульових, і в подальшому два конкуруючих стандарту (RFC 7159 і ECMA-404) визначили його в 2013 році. Стандарт ECMA описує тільки допустимий синтаксис, в той час як RFC охоплює певну базу безпеки і взаємодії.
Крім того, існує стандарт RFC 7493, який визначає обмежений профіль, відомий як I-JSON (скорочення від «Internet JSON»). Він прагне подолати деякі проблеми взаємодії. Кожен такий документ є дійсним документом JSON.
Необхідність у створенні цього формату виросла з потреби в реальному протоколі зв’язку між сервером і браузером, здійснюваної в реальному часі без використання плагінів (таких, як Flash або Java-аплети).
Розвиток і застосування
Як уже відзначено, Дуглас Крокфорд, будучи засновником компанії StateSoftware, вперше позначив і популяризував формат JSON. Згодом співзасновники домовилися про створення системи, що використовує стандартні можливості браузера, і надали абстракціонний рівень для розробників для створення додатків з безперервним дуплексним підключенням до веб-сервера. При цьому з’явилася можливість утримувати два HTTP-з’єднання відкритими і обробляти їх до стандартного часу роботи браузера, якщо обмін даними не проводився. Співзасновники провели обговорення за круглим столом і проголосували за те, щоб назвати формат даних JSML або JSON, а також визначити тип ліцензії, за яким нова розробка стане доступна. В даний час формат має відкритий вихідний код.
практичне використання
Веб-сайт JSON.org був запущений в 2002 році. У грудні 2005 року Yahoo! почав пропонувати деякі зі своїх веб-сервісів в цьому форматі. Google став застосовувати фіди JSON для свого веб-протоколу GData тільки в грудні 2006 року.
Спочатку формат файлу JSON призначався для підмножини мови сценаріїв JavaScript (зокрема, Standard ECMA-262 3rd Edition-December) і зазвичай використовувався разом з ним. Однак це не залежить від мови даних формат. Код для розбору і генерації даних JSON доступний на багатьох мовах програмування. На веб-сайті JSON перераховані всі бібліотеки.
Незважаючи на те, що JSON-формат online спочатку рекламувався і вважався суворим підмножиною JavaScript і ECMAScript, він періодично допускає деякі символи, які не екрановані в рядках, які є неприпустимими в рядках JavaScript і ECMAScript.
Сам по собі JSON став міжнародним стандартом ECMA в 2013 році як стандарт ECMA-404, який в тому ж році використовувався в RFC 7158 в якості посилання. У 2014 році RFC 7159 став основною посиланням на використання JSON в Інтернеті (наприклад, MIME application / json).
Типи даних, синтаксис і приклад
Основними типами даних JSON є:
- Число: десяткове число зі знаком, яке може містити дробову частину і може використовувати експонентну нотацію E, але не може включати не-числа (наприклад, NaN). Формат не робить різниці між цілими і числами з плаваючою комою. JavaScript використовує формат подвійної точності з плаваючою комою для всіх своїх числових значень, Але інші мови, які реалізують JSON, можуть кодувати їх по-різному.
- Рядок: послідовність з нуля або великих символів Unicode. Рядки розділяються знаками подвійних лапок і підтримують синтаксис зворотною косою межею.
- Літерали: будь-яка з значень true або false.
- Масив: упорядкований список з нуля або більше значень, кожен з яких може бути будь-якого типу. Масиви використовують квадратні дужки з запитом.
- Об’єкт: невпорядкований набір пар ім’я / значення, де імена (також звані ключами) є рядками. Оскільки об’єкти призначені для подання асоціативних масивів, рекомендується (хоча і не обов’язково), щоб кожен ключ був унікальним всередині нього. Об’єкти поділяють фігурними дужками і використовують коми для розділення кожної пари, в той час як всередині кожної з них символ двокрапки відокремлює ключ або ім’я від його значення.
- Null: пусте значення, Що використовує слово null.
Обмежені прогалини дозволені і можуть бути виставлені навколо або між синтаксичними елементами (значення і пунктуації, але не в межах строкового значення). Для цієї мети тільки чотири спеціальних символу вважаються пробілами: пробіл, горизонтальна вкладка, переклад рядка і коса риска. Зокрема, мітка байтового порядку не повинна генеруватися відповідної реалізацією (хоча вона може бути прийнята при синтаксичному аналізі JSON). Запит у форматі JSON не надає синтаксису для коментарів.
Ранні версії (наприклад, зазначені в RFC 4627) вимагали, щоб дійсний документ складався тільки з об’єкта або типу масиву, який міг містити інші типи всередині них. Такий JSON-формат, приклад якого можна знайти на застарілих веб-сторінках, в даний час не використовується.
Проблеми з перенесенням даних
Незважаючи на те, що Дуглас Крокфорд спочатку стверджував, що JSON є строгим підмножиною JavaScript, його специфікація фактично дозволяє створювати документи, нечитабельним в JavaScript. Зокрема, JSON допускає, щоб значення рядків Unicode U + 2028 LINE SEPARATOR і U + 2029 PARAGRAPH SEPARATOR виглядали неекранованими в цитованих рядках, а JavaScript — немає. Це є наслідком того, що JSON забороняє тільки «керуючі символи». Для максимальної сумісності ці символи повинні бути екрановані з зворотною косою межею. Ця тонкість важлива при створенні JSONP.
JSON-формат: чим відкрити?
Документи JSON можуть кодуватися в UTF-8, UTF-16 або UTF-32, кодування за замовчуванням — UTF-8. Ці стандарти підтримують повний набір символів «Юникода», включаючи символи поза основною багатомовний площині (від U + 10000 до U + 10FFFF). Однак, якщо вони екрановані, ці символи повинні бути написані з використанням сурогатних пар UTF-16 — деталі, що пропускається деякими аналізаторами JSON-формат. Чим відкрити і як буде прочитаний такий файл?
числа в даному форматі є агностичними щодо їх подання в мовах програмування. Немає жодної різниці між цілим числом і значенням з плаваючою комою: деякі реалізації можуть розглядати 42, 42.0 і 4.2E + 1 як одне і те ж число, в той час як інші можуть не робити цього. Крім того, відсутні вимоги щодо таких питань, як переповнення, недостатність, втрата точності або округлення. Крім того, формат JSON нічого не говорить про обробку підписаних нулів, незалежно від того, чи є 0.0 відмінним від -0.0. Більшість реалізацій, що використовують стандарт IEEE 754 з плаваючою комою, включаючи JavaScript, зберігають знакові нулі, але не всі реалізації JSON можуть це робити.
Використання в JavaScript
Оскільки формат JSON був отриманий з JavaScript і його синтаксис (в основному) є підмножиною мови, для аналізу даних JSON можна використовувати функцію JavaScripteval. Через проблеми з розбором термінаторів рядків Unicode, розглянутих в попередньому розділі, функція eval повинна виконати їх заміну.
Це небезпечно, якщо рядок не перевірена належним чином. Замість цього для читання і запису JSON слід використовувати бібліотеку парсеру JSON або його підтримку на JavaScript.
Правильно реалізований синтаксичний аналізатор приймає тільки дійсний формат JSON, опис якого присутній в системі, запобігаючи ненавмисне виконання потенційно шкідливого коду.
З 2010 року в таких веб-браузерах як Firefox і Internet Explorer включена підтримка аналізу і вивантаження в JSON-формат.
Несумісні власні типи даних
Синтаксис JavaScript визначає кілька власних типів даних, які не включені в стандарт JSON: Карта, Встановити, Дата, Помилка, Регулярний вираз, Функція і деякі інші. ці типи даних JavaScript повинні бути представлені деякими іншими форматами, при цьому обидві програми узгоджують спосіб перетворення між типами. Сьогодні існують деякі стандарти defacto, наприклад, перетворення дати в рядок, але жоден з них не є загальновизнаним. Інші мови можуть мати різний набір власних типів, які повинні бути серіалізовані ретельно, щоб мати справу з цим типом перетворення.
схема JSON
Схема служить для визначення структури даних JSON для перевірки, документування та управління взаємодією. Вона надає свого роду контракт на дані, необхідні додатком, і спосіб їх зміни.
Схема заснована на концепціях з XML Schema (XSD), але є власною. Як і в XSD, використовуються ті ж засоби сериализации / десеріалізациі як для схеми, так і для даних.
Schema — це інтернет-проект, який в даний час знаходиться в 5-й версії (випущеної 13 жовтня 2016 року). Існує кілька валідаторів, доступних для різних мов програмування, кожен з яких володіє різним рівнем відповідності. Стандартного розширення файлів немає, але деякі фахівці пропонують утвердіть.schema.json.
Тип MIME
Офіційним типом MIME для тексту JSON є «application / json». Незважаючи на те що в більшості сучасних реалізацій прийнятий офіційний MIME-тип, багато програм продовжують забезпечувати успадковану підтримку інших типів MIME. Багато постачальників послуг, браузери, сервери, веб-додатки, бібліотеки, фреймворки і API використовують, очікують або розпізнають тип MIME, вміст якого виглядає як «текст / json» або «текст / javascript». Відомі приклади включають в себе Google Search API, Yahoo !, Flickr, Facebook API, DojoToolkit 0.4 і так далі.
JSON-RPC
JSON-RPC — це протокол віддаленого виклику процедур (RPC), побудований на JSON, створений в якості заміни для XML-RPC або SOAP. Це простий протокол, який визначає тільки кілька типів даних і команд. Він дозволяє системі відправляти повідомлення (інформацію на сервер, який не потребує відповіді) і кілька викликів на сервер, на які можна відповісти не по порядку.
AJAJ
Асинхронний JavaScript і JSON (або AJAJ) відносяться до тієї ж динамічної методології веб-сторінок, що і Ajax, але замість XML саме формат даних JSON є основним. AJAJ — це технологія веб-розробки, яка забезпечує можливість веб-сторінки запитувати нові дані після завантаження в браузер. Зазвичай він відображає їх з сервера у відповідь на дії користувача на цій сторінці. Наприклад, те, що користувач вводить в поле пошуку, клієнтський код потім відправляє на сервер, який відразу ж відповідає списком відповідних елементів бази даних.
проблеми безпеки
Текст в JSON-форматі визначається як об’єкт сериализации даних. Однак його дизайн, як Нечитка підмножина мови сценаріїв JavaScript, створює кілька проблем безпеки. Вони зосереджені на використанні інтерпретатора «Яваскрипт» для динамічного виконання тексту JSON, як вбудованого JavaScript. Це піддає програму помилковим або зловмисним скриптів. Це серйозна проблема при роботі з даними, вилучаються з Інтернету.
Даний простий і популярний, але ризикований метод використовує сумісність з функцією JavaScripteval.
Деякі розробники помилково вважають, що текст в форматі JSON також є синтаксично аналогічним кодом JavaScript, хоча це тільки частково вірно. Тому вважається, що простий спосіб для JavaScript-програми аналізувати дані в цьому форматі — використання вбудованої функції JavaScripteval, яка була розроблена для оцінки виразів «Яваскрипт». Замість використання специфічного парсеру сам інтерпретатор, таким чином, використовується для виконання даних JSON, створюючи природні JavaScript-об’єкти. Однак цей метод є ризикованим, якщо є ймовірність, що дані JSON можуть містити довільний код «Яваскрипт», який потім буде виконаний так само. Якщо спочатку не буде вжито заходів для перевірки даних, метод eval схильний вразливостей безпеки, коли дані і вся середа JavaScript не перебувають під контролем одного довіреного джерела.
Наприклад, якщо дані не перевірені, вони піддаються атакам шкідливого коду JavaScript. Такі порушення також можуть створювати небезпеку крадіжки даних, підробки аутентифікації і інші потенційні зловживання даними і ресурсами.
Таким чином, нова функція JSON.parse була розроблена як більш безпечна альтернатива eval. Вона спеціально призначена для обробки даних саме JSON, а не JavaScript. Спочатку вона була запланована для включення в четверте видання стандарту ECMAScript, але цього не сталося. Вона була вперше додана в п’яту версію і тепер підтримується основними браузерами.