Работа с JSON
Обозначение объектов JavaScript (JSON — JavaScript Object Notation) — стандартный текстовый формат для представления структурированных данных на основе синтаксиса объекта JavaScript. Он обычно используется для передачи данных в веб-приложениях (например, отправка некоторых данных с сервера клиенту,таким образом чтобы это могло отображаться на веб-странице или наоборот). Вы будете сталкиваться с этим довольно часто, поэтому в этой статье мы даём вам все, что вам нужно для работы с JSON используя JavaScript, включая парсинг JSON, чтобы вы могли получить доступ к данным внутри него при создании JSON.
| Необходимые знания: | Базовая компьютерная грамотность, базовые знания HTML и CSS, знакомство с основами JavaScript (см. First steps и Building blocks) и основами OOJS (see Introduction to objects (en-US) ). |
|---|---|
| Цель: | Понять, как работать с данными, хранящимися в JSON, и создавать свои собственные объекты JSON. |
Нет, действительно, что такое JSON?
JSON — текстовый формат данных, следующий за синтаксисом объекта JavaScript, который был популяризирован Дугласом Крокфордом. Несмотря на то, что он очень похож на буквенный синтаксис объекта JavaScript, его можно использовать независимо от JavaScript, и многие среды программирования имеют возможность читать (анализировать) и генерировать JSON.
JSON существует как строка,что необходимо при передаче данных по сети. Он должен быть преобразован в собственный объект JavaScript, если вы хотите получить доступ к данным. Это не большая проблема. JavaScript предоставляет глобальный объект JSON, который имеет методы для преобразования между ними.
Примечание: Преобразование строки в родной объект называется десериализацией (преобразование из последовательной формы в параллельную*)*, в то время как преобразовании родного объекта в строку, таким образом ,чтобы он мог быть передан через сеть, называется сериализацией(преобразование в последовательную форму).
Объект JSON может быть сохранён в собственном файле, который в основном представляет собой текстовый файл с расширением .json и MIME type application/json .
Структура JSON
Как описано выше, JSON представляет собой строку, формат которой очень похож на буквенный формат объекта JavaScript. Вы можете включать одни и те же базовые типы данных внутри JSON, так же как и в стандартном объекте JavaScript — строки, числа, массивы, булевы и другие объектные литералы. Это позволяет построить иерархию данных, к примеру, так:
"squadName": "Super hero squad", "homeTown": "Metro City", "formed": 2016, "secretBase": "Super tower", "active": true, "members": [ "name": "Molecule Man", "age": 29, "secretIdentity": "Dan Jukes", "powers": ["Radiation resistance", "Turning tiny", "Radiation blast"] >, "name": "Madame Uppercut", "age": 39, "secretIdentity": "Jane Wilson", "powers": [ "Million tonne punch", "Damage resistance", "Superhuman reflexes" ] >, "name": "Eternal Flame", "age": 1000000, "secretIdentity": "Unknown", "powers": [ "Immortality", "Heat Immunity", "Inferno", "Teleportation", "Interdimensional travel" ] > ] >
Если бы мы загрузили этот объект в программу JavaScript, создали переменную с названием superHeroes , мы могли бы затем получить доступ к данным внутри неё, используя те же самые точечную и скобочную нотации, которые мы рассмотрели в статье JavaScript object basics. Например:
.homeTown; superHeroes["active"];
Чтобы получить доступ к последующим данным по иерархии, вам просто нужно объединить требуемые имена свойств и индексы массивов. Например, чтобы получить доступ к третьей сверхспособности второго героя, указанного в списке участников, вы должны сделать следующее:
["members"][1]["powers"][2];
- Сначала у нас есть имя переменной — superHeroes .
- Внутри мы хотим получить доступ к свойству members , поэтому мы используем [‘members’] .
- members содержат массив, заполненный объектами. Мы хотим получить доступ ко второму объекту внутри массива, поэтому мы используем [1] .
- Внутри этого объекта мы хотим получить доступ к свойству powers , поэтому мы используем [‘powers’] .
- Внутри свойства powers находится массив, содержащий сверхспособности выбранного героя. Нам нужен третий, поэтому мы используем [2] .
Примечание: . Мы сделали JSON, видимый выше, доступным внутри переменной в нашем примере JSONTest.html (см. исходный код). Попробуйте загрузить это, а затем получить доступ к данным внутри переменной через консоль JavaScript вашего браузера.
Массивы как JSON
Выше мы упоминали ,что JSON текст выглядит практически так же как и JavaScript объект,и это почти правильно.Причина,по которой мы говорим почти правильно заключается в том ,что массив также валиден JSON например:
[ "name": "Molecule Man", "age": 29, "secretIdentity": "Dan Jukes", "powers": ["Radiation resistance", "Turning tiny", "Radiation blast"] >, "name": "Madame Uppercut", "age": 39, "secretIdentity": "Jane Wilson", "powers": [ "Million tonne punch", "Damage resistance", "Superhuman reflexes" ] > ]
Вышесказанное вполне справедливо для JSON. Вам просто нужно получить доступ к элементам массива (в его анализируемой версии), начиная с индекса массива, например [0][«powers»][0] .
Другие примечания
- JSON — это чисто формат данных — он содержит только свойства, без методов.
- JSON требует двойных кавычек, которые будут использоваться вокруг строк и имён свойств. Одиночные кавычки недействительны.
- Даже одна неуместная запятая или двоеточие могут привести к сбою JSON-файла и не работать. Вы должны быть осторожны, чтобы проверить любые данные, которые вы пытаетесь использовать (хотя сгенерированный компьютером JSON с меньшей вероятностью включает ошибки, если программа генератора работает правильно). Вы можете проверить JSON с помощью приложения вроде JSONLint.
- JSON может принимать форму любого типа данных, допустимого для включения в JSON, а не только массивов или объектов. Так, например, одна строка или номер будут действительным объектом JSON.
- В отличие от кода JavaScript, в котором свойства объекта могут не заключаться в двойные кавычки, в JSON в качестве свойств могут использоваться только строки заключённые в двойные кавычки.
Активное обучение: Работа с примером JSON
Итак, давайте рассмотрим пример, чтобы показать то, как мы можем использовать некоторые данные JSON на веб-сайте.
Начало работы
Для начала создайте локальные копии наших файлов heroes.html и style.css. Последний содержит простой CSS для стилизации нашей страницы, в то время как первый содержит очень простой HTML-код сущности:
header>header> section>section>
var header = document.querySelector("header"); var section = document.querySelector("section");
Мы собираемся загрузить его на нашу страницу и использовать некоторые изящные манипуляции DOM, чтобы отобразить их, например:
Получение JSON
Чтобы получить JSON, мы будем использовать API, называемый XMLHttpRequest (часто называемый XHR). Это очень полезный объект JavaScript, который позволяет нам делать сетевые запросы для извлечения ресурсов с сервера через JavaScript (например, изображения, текст, JSON, даже фрагменты HTML), что означает, что мы можем обновлять небольшие разделы контента без необходимости перезагрузки всей страницы. Это привело к более отзывчивым веб-страницам и звучит захватывающе, но, к сожалению, выходит за рамки этой статьи, чтобы изучить это гораздо более подробно.
-
Начнём с того, что мы собираемся сохранить URL-адрес JSON, который мы хотим получить в переменной. Добавьте нижеследующий код JavaScript:
var requestURL = "https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json";
var request = new XMLHttpRequest();
.open("GET", requestURL);
- Метод HTTP, который следует использовать при выполнении сетевого запроса. В этом случае GET самый подходящий, так как мы просто извлекаем некоторые простые данные.
- URL-адрес для запроса — это URL-адрес файла JSON, который мы сохранили ранее.
.responseType = "json"; request.send();
.onload = function () var superHeroes = request.response; populateHeader(superHeroes); showHeroes(superHeroes); >;
Здесь мы сохраняем ответ на наш запрос (доступный в свойстве response ) в переменной superHeroes ; эта переменная теперь будет содержать объект JavaScript, основанный на JSON! Затем мы передаём этот объект двум вызовам функций — первый из них заполнит правильными данными, а второй создаст информационную карту для каждого героя в команде и вставляет её в .
Мы свернули код в обработчик событий, который запускается, когда событие загрузки запускается в объекте запроса (см. onload (en-US) ) — это связано с тем, что событие загрузки запускается, когда ответ успешно возвращается; поступая таким образом,это гарантия того, что request.response определённо будет доступен, когда мы начнём работу с ним.
Теперь мы извлекли данные JSON и превратили его в объект JavaScript, давайте воспользуемся им, написав две функции, на которые мы ссылались выше. Прежде всего, добавьте следующее определение функции ниже предыдущего кода:
function populateHeader(jsonObj) var header = document.querySelector("header"); var myH1 = document.createElement("h1"); myH1.textContent = jsonObj["squadName"]; header.appendChild(myH1); var myPara = document.createElement("p"); myPara.textContent = "Hometown: " + jsonObj["homeTown"] + " // Formed: " + jsonObj["formed"]; header.appendChild(myPara); >
Мы назвали параметр jsonObj , чтобы напомнить себе, что этот объект JavaScript возник из JSON. Здесь мы сначала создаём элемент (en-US) с createElement() , устанавливаем его textContent равным свойству squadName объекта, а затем добавляем его в заголовок с помощью appendChild() . Затем мы выполняем очень похожую операцию с абзацем: создаём его, устанавливаем его текстовое содержимое и добавляем его в заголовок. Единственное различие заключается в том, что его текст задан, как конкатенированная строка, содержащая как homeTown , так и formed свойства объекта.
Создание информационных карт героя
Затем добавьте следующую функцию внизу кода, которая создаёт и отображает карты супергероев:
function showHeroes(jsonObj) var section = document.querySelector("section"); var heroes = jsonObj["members"]; for (var i = 0; i heroes.length; i++) var myArticle = document.createElement("article"); var myH2 = document.createElement("h2"); var myPara1 = document.createElement("p"); var myPara2 = document.createElement("p"); var myPara3 = document.createElement("p"); var myList = document.createElement("ul"); myH2.textContent = heroes[i].name; myPara1.textContent = "Secret identity: " + heroes[i].secretIdentity; myPara2.textContent = "Age: " + heroes[i].age; myPara3.textContent = "Superpowers:"; var superPowers = heroes[i].powers; for (var j = 0; j superPowers.length; j++) var listItem = document.createElement("li"); listItem.textContent = superPowers[j]; myList.appendChild(listItem); > myArticle.appendChild(myH2); myArticle.appendChild(myPara1); myArticle.appendChild(myPara2); myArticle.appendChild(myPara3); myArticle.appendChild(myList); section.appendChild(myArticle); > >
Для начала сохраним свойство members объекта JavaScript в новой переменной. Этот массив содержит несколько объектов, которые содержат информацию для каждого героя.
Затем мы используем for loop для циклического прохождения каждого объекта в массиве. Для каждого из них мы:
- Создаём несколько новых элементов: , , три
и
. - Устанавливаем , чтобы содержать name текущего героя.
- Заполняем три абзаца своей secretIdentity , age и строкой, в которой говорится: «Суперспособности:», чтобы ввести информацию в список.
- Сохраняем свойство powers в другой новой переменной под названием superPowers — где содержится массив, в котором перечислены сверхспособности текущего героя.
- Используем другой цикл for , чтобы прокрутить сверхспособности текущего героя , для каждого из них мы создаём элемент
- , помещаем в него сверхспособности, а затем помещаем listItem внутри элемента
( myList ) с помощью appendChild() . - Последнее, что мы делаем, это добавляем ,
и
внутри ( myArticle ), а затем добавляем в . Важное значение имеет порядок, в котором добавляются элементы, так как это порядок, который они будут отображать внутри HTML.
Примечание: . Если вам не удаётся заставить этот пример работать, попробуйте обратиться к нашему исходному коду heroes-finished.html (см. также он работает в режиме live).
Примечание: . Если у вас возникли проблемы после нотации точек / скобок, которые мы используем для доступа к объекту JavaScript, в этом поможет открытие файла superheroes.json на другой вкладке или в текстовом редакторе ,и обращаться к нему каждый раз, когда вам нужен JavaScript. Вы также можете обратиться к нашей статье JavaScript objectbasics чтобы получить дополнительную информацию о нотации точек и скобок.
Преобразование между объектами и текстом
Вышеприведённый пример был прост с точки зрения доступа к объекту JavaScript, потому что мы задали XHR-запрос для прямого преобразования ответа JSON в объект JavaScript, используя:
.responseType = "json";
Но иногда нам не так везёт — иногда мы получаем сырую строку JSON и нам нужно преобразовать её в объект самостоятельно. И когда мы хотим отправить объект JavaScript по сети, нам нужно преобразовать его в JSON (строку) перед отправкой. К счастью, эти две проблемы настолько распространены в веб-разработке, что встроенный объект JSON доступен в браузерах, которые содержат следующие два метода:
- parse() : принимает строку JSON в качестве параметра и возвращает соответствующий объект JavaScript.
- stringify() : принимает объект, как параметр и возвращает эквивалентную строковую JSON строку.
Вы можете увидеть первый метод в действии в нашем примере heroes-finished-json-parse.html (см. исходный код) — это то же самое, что и в примере, который мы создали ранее, за исключением того, что мы установили XHR для возврата сырого JSON текста, затем используется parse() , чтобы преобразовать его в фактический объект JavaScript. Ключевой фрагмент кода находится здесь:
.open("GET", requestURL); request.responseType = "text"; // now we're getting a string! request.send(); request.onload = function () var superHeroesText = request.response; // get the string from the response var superHeroes = JSON.parse(superHeroesText); // convert it to an object populateHeader(superHeroes); showHeroes(superHeroes); >;
Как вы могли догадаться, stringify() работает обратным образом. Попробуйте ввести следующие строки в консоль JavaScript браузера один за другим, чтобы увидеть его в действии:
var myJSON = name: "Chris", age: "38" >; myJSON; var myString = JSON.stringify(myJSON); myString;
Здесь мы создаём объект JavaScript, затем проверяем, что он содержит, а затем преобразуем его в строку JSON, используя stringify() , сохраняя возвращаемое значение в новой переменной, а затем снова проверяем его.
Резюме
В этой статье мы предоставили вам простое руководство по использованию JSON в ваших программах, в том числе о том, как создавать и анализировать JSON, и как получить доступ к данным, заблокированным внутри него. В следующей статье мы рассмотрим объектно-ориентированный JavaScript.
Смотрите также
- JSON object reference page
- XMLHttpRequest object reference page
- Using XMLHttpRequest
- HTTP request methods
- Official JSON web site with link to ECMA standard
- Назад
- Обзор: Objects
- Далее
В этом модуле
- Основы объекта
- Объектно-ориентированный JavaScript для начинающих
- Прототипы объектов
- Наследование в JavaScript
- Работа с данными JSON
- Практика построения объектов
- Добавление функций в нашу демонстрацию прыгающих шаров
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
Как создать json
JSON (JavaScript Object Notation) — это легкий формат обмена данными, который стал популярным благодаря своей простоте и читаемости. Он широко используется в веб-разработке для передачи структурированных данных между клиентом и сервером. Если вы хотите научиться создавать собственные JSON-файлы, этот гайд поможет вам шаг за шагом разобраться в процессе.
Шаг 1: Определение структуры данных
Перед тем, как создавать JSON-файл, необходимо определить структуру данных, которую вы хотите представить. JSON представляет данные в формате «ключ-значение», поэтому для каждого элемента данных нужно определить уникальный ключ и соответствующее значение. Например, если вы хотите создать JSON-файл для списка пользователей, вам нужно определить ключи, такие как «имя», «фамилия», «возраст» и т.д.
В этом примере JSON-файл содержит массив «users», внутри которого находятся объекты с информацией о каждом пользователе.
JSON-формат данных
JSON-формат поддерживает следующие типы данных:
- Числа — целые числа и числа с плавающей запятой.
- Строки — последовательность символов, заключенных в двойные кавычки.
- Логические значения — true или false.
- Массивы — упорядоченные списки значений, разделенные запятыми и заключенные в квадратные скобки.
- Объекты — неупорядоченные коллекции пар «ключ-значение», разделенных запятыми и заключенные в фигурные скобки.
- null — специальное значение, обозначающее отсутствие значения.
JSON-код представляет собой текстовую строку в формате Unicode. Он легко читается и записывается как человеком, так и компьютером. Каждое значение в JSON-файле должно быть заключено в двойные кавычки, а ключи должны быть также заданы в двойных кавычках.
Примечание: Валидный JSON-файл всегда начинается с фигурной открывающей скобки < и заканчивается фигурной закрывающей скобкой >.
Зачем создавать JSON-файлы?
1. Легкочитаемость: JSON-файлы очень просты и понятны для чтения и понимания человеком. Они используют читаемый синтаксис, состоящий из пары ключ-значение, разделенных запятой и заключенных в фигурные скобки. Это делает JSON-файлы идеальным выбором для хранения и обмена данными между приложениями и различными системами.
2. Универсальность: JSON-файлы можно использовать в разных языках программирования, потому что JSON поддерживается практически всеми современными языками программирования. Это значит, что созданные вами JSON-файлы могут быть легко использованы в разных приложениях или сервисах.
3. Простота создания и обработки: Создание JSON-файлов не требует сложных инструментов или специальных знаний. Вам нужно только знать синтаксис JSON и иметь доступ к текстовому редактору или инструментам, поддерживающим работу с JSON. JSON также имеет простые инструменты для обработки данных, что делает его удобным для работы с ним.
4. Поддержка разных типов данных: JSON поддерживает различные типы данных, такие как строки, числа, логические значения, массивы и объекты. Это позволяет хранить и передавать разнообразные данные, что делает JSON-файлы гибкими и мощными инструментами.
5. Популярность: JSON является одним из самых популярных форматов обмена данными в веб-разработке. Он широко поддерживается различными фреймворками, библиотеками и сервисами, что делает его практически стандартным выбором для обмена данными.
Все эти преимущества делают создание JSON-файлов полезным и удобным для передачи и хранения данных разного рода. JSON-файлы могут использоваться для хранения настроек, передачи данных между клиентом и сервером, обмена данными между разными приложениями и многих других задач.
Инструменты для создания JSON-файлов
Существует множество инструментов, которые помогают создавать JSON-файлы. Вот некоторые из них:
- Текстовые редакторы: Большинство текстовых редакторов, таких как Sublime Text, Visual Studio Code и Atom, предлагают поддержку для работы с JSON. Они обеспечивают подсветку синтаксиса, автодополнение и другие полезные функции для создания и редактирования JSON-файлов.
- Онлайн-инструменты: Существуют множество онлайн-инструментов для создания JSON-файлов. Они позволяют вам наглядно представить структуру данных и заполнить ее значениями. Некоторые из популярных онлайн-инструментов включают JSON Editor Online, JSON Generator и JSON Placeholder.
- Библиотеки и пакеты: Для различных языков программирования существуют библиотеки и пакеты, которые упрощают создание и манипулирование JSON-файлами. Например, в Python можно использовать библиотеку json, а в JavaScript — JSON.stringify().
- Генераторы: Если вы хотите создать большой JSON-файл со множеством данных, можно воспользоваться генераторами. Они генерируют случайные или заданные данные в формате JSON, что может быть полезно для тестирования или создания мок-данных. Некоторые из популярных генераторов JSON — json-generator.com, mockaroo.com и оffline-генераторы.
- API: Некоторые платформы и сервисы предоставляют API для создания JSON-файлов. Это позволяет автоматизировать процесс создания и обновления JSON-файлов через код.
Независимо от инструмента, который вы предпочитаете использовать, главное — понимать правила формата JSON и структуру данных, которую хотите представить в файле. Тщательное планирование структуры и значения полей поможет вам создать JSON-файл, который будет легко использовать и интерпретировать другими приложениями и сервисами.
Онлайн-генераторы JSON
Онлайн-генераторы JSON обеспечивают пользователей интуитивно понятным интерфейсом, что делает процесс создания JSON-файлов простым даже для тех, кто не имеет опыта программирования. Они позволяют добавлять и удалять свойства, создавать массивы и вложенные объекты, а также предлагают автозаполнение и подсказки при вводе данных.
Использование онлайн-генераторов JSON позволяет существенно сократить время, затрачиваемое на создание файлов данного формата. Кроме того, они также позволяют визуально просматривать и редактировать JSON-данные, что упрощает отладку и обеспечивает полный контроль над файлом.
Существует множество онлайн-генераторов JSON, доступных в сети. Некоторые из них предлагают дополнительные функции, такие как валидацию JSON-кода и конвертацию данных в различные форматы, например XML или CSV. Некоторые из популярных онлайн-генераторов JSON включают JSON Editor Online, JSON Generator, JSON Formatter & Validator и JSON Editor. Однако, перед использованием любого из этих инструментов, рекомендуется внимательно проверить их рейтинги и отзывы пользователей.
В целом, онлайн-генераторы JSON являются очень полезными инструментами для создания JSON-файлов. Они помогают сэкономить время и упрощают процесс создания и редактирования JSON-объектов даже для тех, кто не имеет опыта программирования.
Редакторы кода
При создании JSON-файлов можно использовать различные редакторы кода, которые упрощают процесс написания и форматирования данных.
Ниже представлена таблица с некоторыми популярными редакторами кода и их особенностями:
| Название | Особенности |
|---|---|
| Visual Studio Code | Бесплатный, многофункциональный редактор, поддерживает автодополнение и проверку синтаксиса JSON. |
| Sublime Text | Легковесный, быстрый редактор с широкими возможностями настройки, поддерживает многоязыковую подсветку синтаксиса. |
| Atom | Открытый и гибкий редактор, разработанный GitHub, с большим количеством плагинов для улучшения работы с JSON. |
| Notepad++ | Простой и легковесный редактор для Windows, поддерживающий подсветку синтаксиса различных языков программирования. |
Выбор редактора кода влияет на удобство работы и эффективность создания JSON-файлов. Важно учесть свои предпочтения и требования, чтобы сделать работу максимально комфортной.
Общая структура JSON-файлов
Общая структура JSON-файла выглядит следующим образом:
Ключи и значения в JSON-файлах должны быть заключены в двойные кавычки. Ключи могут быть любыми строками, а значения могут быть любого поддерживаемого типа данных.
JSON-файлы могут также содержать вложенные объекты и массивы данных. Вложенные объекты и массивы могут быть использованы для организации сложных структур данных. Ниже приведен пример JSON-файла с вложенными объектами и массивами:
< "ключ1": "значение1", "ключ2": < "вложенный_ключ1": "вложенное_значение1", "вложенный_ключ2": "вложенное_значение2" >, "ключ3": ["значение3", "значение4", "значение5"] >
Обратите внимание, что вложенные объекты и массивы обозначаются фигурными скобками и квадратными скобками соответственно. Вложенные объекты могут содержать другие пары «ключ-значение», а вложенные массивы — значения определенного типа данных.
JSON-файлы очень удобны для обмена данными между различными программами и платформами. Они легко считываются и записываются при помощи различных языков программирования, таких как JavaScript, Python, Java и других.
Важно при создании JSON-файлов придерживаться правильной структуры и синтаксиса, чтобы обеспечить правильное чтение и обработку данных.
Как создать JSON файл.

У тех, кто начинает изучать работу с JSON могут возникать некоторые трудности на самом первом шаге. Как создать файл с расширением *.json?
Подробнее о том, что такое json, можно посмотреть здесь.

Из своей практики, я могу предложить два варианта, как это можно сделать.
1 вариант. Создание файла JSON из простого текстового файла.
Создать простой текстовый документ, вставить туда нужный код JSON данных и поменять расширение файла на *.json.
Откройте любой текстовый редактор, например, редактор «Блокнот», который входит в состав операционной системы Windows. Найти эту программу можно через главное меню Пуск -> Все программы ->Стандартные -> Блокнот.
В главном меню программы выбираем «Файл-Сохранить как».

И сохраняем текстовый файл с расширением *.txt.
Теперь нужно поменять расширение этого файла с *.txt на *.json.
Если у Вас не отображается расширение файлов, вот заметка:
После такой операции, вы получаете json-файл, в котором можно хранить данные.
2 вариант. Сервис jsoneditoronline.
Это вариант, по моему мнению, намного удобнее. Вот ссылка на Интернет-сервис, с помощью которого можно легко создавать json файлы.
После того, как вы сформируете там свои данные, достаточно нажать на кнопку Save и готовый json файл сохраниться на диск.

Преимущество в использовании этого варианта в том, что сервис указывает на все синтаксические ошибки, которые вы можете допустить.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
What is JSON?
JavaScript Object Notation, more commonly known by the acronym JSON, is an open data interchange format that is both human and machine-readable. Despite the name JavaScript Object Notation, JSON is independent of any programming language and is a common API output in a wide variety of applications.
JSON represents data in two ways:
- Object: a collection of name-value (or key-value) pairs. An object is defined within left (<) and right (>) braces. Each name-value pair begins with the name, followed by a colon, followed by the value. Name-value pairs are comma separated.
- Array: an ordered collection of values. An array is defined within left ([) and right (]) brackets. Items in the array are comma separated.

Below is a JSON example that contains an array of objects in which the objects represent different films in a streaming library. Each film is defined by two name-value pairs, one that specifies a unique value to identify that film and another that specifies a URL that points to the corresponding film’s promotional image.
var films = [, , , , ];
Code snippet copied
What is a JSON document database?
A JSON document database is a type of nonrelational database that is designed to store and query data as JSON documents, rather than normalizing data across multiple tables, each with a unique and fixed structure, as in a relational database. JSON document databases use the same document-model format that developers use in their application code, which make it much easier for them to store and query data. The flexible, semi-structured, and hierarchical nature of JSON document databases allows them to evolve with applications’ needs. JSON document databases provide powerful and intuitive APIs for flexible and agile development.


Amazon DocumentDB (with MongoDB compatibility) is a fast, scalable, highly available, and fully managed document database service that supports MongoDB workloads, that makes it easy to store, query, and index JSON data.

Amazon DocumentDB makes it easy to insert, query, index, and perform aggregations over JSON data.
Relational Database vs. JSON Document Database Terminology
The following table compares terminology used by JSON document databases with terminology used by relational databases using SQL.
| Relational database (SQL) | JSON document database |
|---|---|
| Table | Collection |
| Row | Document |
| Column | Field |
| Primary key | ObjectID |
| Index | Index |
| View | View |
| Nested table or object | Embedded document |
| Array | Array |
Use cases for a JSON document database
Content management
A JSON document database is a great choice for content management applications, such as blogs and video platforms, because each entity can be stored as a single JSON document. Should the data model need to change, only the affected documents need to be updated, with no need for schema updates and no database downtime required.
Catalogs
JSON document databases are efficient and effective for storing catalog information. For example, in an e-commerce app, different products usually have different numbers of attributes. These attributes can be described in a single JSON document for easy management and faster reading speed than would be possible with a relational database.
User profiles
JSON document databases are a good solution for online profiles in which different users provide different types of information. Using a JSON document database, you can store each user’s profile efficiently by storing only the attributes that are specific to each user. JSON document databases easily manage this level of individuality and fluidity.
Real-time big data
Being able to extract operational information in real time is critical in a highly competitive business environment. By using JSON document databases, a business can store and manage operational data from any source and concurrently feed the data to the BI engine of choice for analysis, with no need to have two separate environments.
Customers managing JSON data with Amazon DocumentDB
“We, the Deutsche Fußball Liga GmbH (DFL) use AWS to power our publishing platform, delivering the latest news from the league to millions of fans worldwide. As our content and user base grew, we had a focus on maintaining our relational database’s performance. We migrated to Amazon DocumentDB (with MongoDB compatibility) because of its flexible schema, native JSON support that enables our developers to deploy faster, and its decoupled architecture can scale our read throughput in minutes. We prototyped the application locally using the MongoDB Community Edition, and quickly deployed to production on Amazon DocumentDB. Everything worked just as we expected and we have successfully scaled our database performance.”
Andreas Heyden, CEO DFL Digital Sports, EVP Digital Innovations — DFL Group
FINRA regulates a critical part of the securities industry – brokerage firms doing business with the public in the United States. FINRA takes in up to 135 billion market events per day that are tracked, aggregated, and analyzed for the purpose of protecting investors.
“FINRA’s Data Collection platform stores millions of regulatory filings from hundreds of thousands customers, such as broker dealers, investment advisors, and stock exchanges. Our old platform was built using a relational database that stored data in XML, which had a rigid query structure and required us to write custom code for data versioning and schema validation. We chose Amazon DocumentDB because it natively stores data in JSON, making it simpler to query and index regulatory documents. This reduces our development cycles, while extending the usability of our data by easily integrating with other systems that leverage JSON. Because DocumentDB is a fully managed service, our databases are scalable, highly available, backed up, and encrypted without any overhead from our engineering teams.”
Ranga Rajagopal, Senior Director, Enterprise Data Platforms — FINRA
“At Habby, we use Amazon DocumentDB to store, query, and analyze both game player data and game operational data as well as data for promotional activities. Amazon DocumentDB is a natural and convenient choice for Habby as all of our game data is JSON and Amazon DocumentDB makes it easy to read and write that JSON data to the database. We chose Amazon DocumentDB because of the ease-of-management and its compatibility with MongoDB. We had initially planned to self-manage MongoDB on EC2 but found through testing that it was not convenient and required more work than we were willing to invest. With Amazon DocumentDB, our development team can scale, iterate, and upgrade games quickly, the marketing team can carry out high pertinence promotion activities, and our customer service team can troubleshoot problems from game players efficiently.”
Shuxiang Zhao, Chief Technology Officer — HABBY PTE.LTD.
