JSON: методы, ограничения, примеры использования

JSON:  методы, ограничения, примеры использования
Антон Ларичев
Основатель школы PurpleSchool

JSON является популярным форматом обмена данными в веб-разработке по ряду причин: это и простота в использовании, легковесность, гибкость, но главное что он поддерживается подавляющим большинством современных языков программирования и нативно интегрирован в JavaScript. Сейчас сложно представить веб разработку без JSON и в данной статье мы рассмотрим основные приемы работы с данным форматом, а так же примеры использования.

Синтаксис JSON и примеры использования

JSON (JavaScript Object Notation) очень похож на буквенный синтаксис объекта JavaScript с тем лишь отличием, что имена свойств всегда заключены в двойные кавычки, и не используются другие виды кавычек (одинарные, обратные). Кроме того данные в формате JSON нельзя сразу использовать в JavaScript. Для работы с ними у глобального объекта JSON существует два метода: JSON.stringify(), который при базовом использовании принимает данные с типом Object, Array, Number, String, Boolean и Null, после чего преобразует их в JSON строку и JSON.parse(), который преобразует данные из JSON.

JSON:  методы, ограничения, примеры использования

Перевод данных в формат JSON и обратно используется не только для передачи данных по сети, но и для клонирования ссылочных типов данных. В нашем примере свойство myArr объекта parsedObj не будет ссылаться на объявленный в первой строке массив, а создаст его независимую копию.

Ограничения формата JSON и как их обойти

При описании метода JSON.stringify() я не просто так перечислил поддерживаемые типы данных. Дело в том, что JSON не умеет работать с типами Date, BigInt, Map и остальными, не попавшими в описаный список. Что бы преобразовать такие данные в JSON строку необходимо привести их к поддерживаемому типу. Сделать это можно прямо внутри метода, передав в него необязательным параметром функцию, которая принимает все пары ключ-значение и преобразует их по ходу работы метода.

JSON:  методы, ограничения, примеры использования

Кроме того JSON.stringify() не может работать с циклическими зависимостями. Что бы исключить из сериализации значения с такими зависимостями или если вам нужно преобразовать в JSON формат только часть объекта, можно вместо функции передать вторым параметром массив ключей и в результате метод вернет строку, содержащую только пары ключ-значение с этими ключами.

JSON:  методы, ограничения, примеры использования

Дополнительные возможности JSON.

Метод parse() глобального объекта JSON тоже принимает дополнительным параметром функцию, которая по аналогии с JSON.stringify() обработает каждую пару ключ-значение при парсинге строки.

JSON:  методы, ограничения, примеры использования

Кроме функции обработки пар ключ-значение, метод JSON.stringify() может принимать еще одним параметром вид отступов для более удобного при чтении форматирования получаемой строки. Важно помнить, что это третий параметр метода и если функция или массив не переданы вторым параметром - нужно указать вместо них null.

JSON:  методы, ограничения, примеры использования

Мы уже знаем что при вызове JSON.stringify() можно указать массив ключей или функцию, которая обработает все пары ключ-значение, но мы так же можем изменить поведение этого метода при описании объекта, который будет в него передаваться. Для этого нужно добавить такому объекту свойство toJSON и описать в нем функцию, возвращающую нужное нам значение. Таким образом можно “скрыть” для JSON.stringify() приватные данные или вовсе передавать значения полностью отличные от содержимого объекта.

JSON:  методы, ограничения, примеры использования

Заключение

Работа с данными формата JSON и методами одноименного глобального объекта в JavaScript давно стала неотъемлемой частью разработки веб приложений поэтому навыки взаимодействия с ними необходимы каждому разработчику. Надеюсь что данная статья была полезна для понимания столь важной темы, а если вы хотите изучить основы языка или детально погрузиться в устройство JavaScript я подготовил подробные курсы.

JavaScript с нуля - основы языка и практика для начинающих

- 16 часов коротких лекций по 10 - 15 минут

- 15 упражнений для закрепления на практике1

- 5 тестов для проверки знаний

- Рейтинг ⭐ 4.9 на основании отзывов

- 30-ти дневная гарантия возврата денег

JavaScript Advanced - продвинутые концепции языка и ООП

- 18 часов коротких лекций по 10 - 15 минут

- 30упражнений для закрепления на практике

- 14 тестов для проверки знаний

- Рейтинг ⭐ 4.9 на основании отзывов

- 30-ти дневная гарантия возврата денег

Начать дискуссию