JSON (parse, stringify)
Урок: JSON (parse, stringify)
Введение
Представь, что фронтенд и сервер должны «разговаривать» друг с другом. Например, пользователь открывает страницу, и сайт загружает список товаров с сервера. Или отправляет форму с данными.
Но возникает вопрос: в каком виде передавать данные?
JavaScript работает с объектами, но серверу нужно получить данные в текстовом формате. И наоборот — сервер отправляет данные как текст, а нам нужно превратить их обратно в объекты.
Для этого используется JSON.
JSON — это формат, который позволяет удобно передавать структурированные данные в виде строки. И в JavaScript есть два ключевых инструмента для работы с ним:
JSON.stringify— превращает объект в строку;JSON.parse— превращает строку обратно в объект.
Что такое JSON на практике
JSON (JavaScript Object Notation) — это текстовый формат, который выглядит очень похоже на объект JavaScript.
Пример JSON:
{
"name": "Stepan",
"age": 25
}
На первый взгляд это почти обычный объект. Но есть важное отличие: это строка, а не JavaScript-объект.
В JavaScript аналогичный объект выглядел бы так:
let user = {
name: 'Stepan',
age: 25,
};
Разница в том, что JSON используется для передачи данных, а объект — для работы с ними в коде.
Преобразование объекта в JSON — stringify
Метод JSON.stringify превращает объект в строку.
let user = {
name: 'Stepan',
age: 25,
};
let json = JSON.stringify(user);
console.log(json);
Результат:
{"name":"Stepan","age":25}
Разберём:
- мы берём объект
user; - вызываем
JSON.stringify; - получаем строку в формате JSON.
Теперь эту строку можно:
- отправить на сервер;
- сохранить в файл;
- записать в localStorage.
Важно: результат — это строка, а не объект.
Обратное преобразование — parse
Метод JSON.parse делает обратное: превращает JSON-строку в объект.
let json = '{"name":"Stepan","age":25}';
let user = JSON.parse(json);
console.log(user.name);
Результат:
Stepan
Здесь:
json— это строка;JSON.parseпреобразует её в объект;- после этого можно работать как с обычным объектом.
Это очень важно при работе с API, потому что данные почти всегда приходят в формате JSON.
Важные правила JSON
Хотя JSON похож на объект, у него есть строгие правила.
Например:
{
"name": "Stepan"
}
Здесь ключи обязательно в двойных кавычках.
В JavaScript можно писать так:
let user = { name: 'Stepan' };
Но в JSON так нельзя.
Также JSON не поддерживает:
- функции;
undefined;- комментарии.
Например:
let user = {
name: 'Stepan',
sayHi: function () {},
};
console.log(JSON.stringify(user));
Функция в объекте при JSON.stringify не попадает в строку — свойство с функцией опускается.
Работа с массивами
JSON отлично работает с массивами.
let users = [{ name: 'Stepan' }, { name: 'Ivan' }];
let json = JSON.stringify(users);
console.log(json);
Результат:
[{"name":"Stepan"},{"name":"Ivan"}]
А теперь обратно (в отдельном запуске строка JSON задаётся заново):
let json = '[{"name":"Stepan"},{"name":"Ivan"}]';
let parsed = JSON.parse(json);
console.log(parsed[0].name);
Результат:
Stepan
Таким образом можно передавать сложные структуры данных.
Где это используется на практике
JSON используется практически везде.
Когда ты:
- получаешь данные с сервера;
- отправляешь данные через API;
- сохраняешь данные в localStorage;
- работаешь с конфигурациями;
— почти всегда используется JSON.
Например:
- сервер отправляет JSON → ты делаешь
JSON.parse; - ты отправляешь данные → используешь
JSON.stringify.
Это стандарт обмена данными в вебе.
Частые ошибки
Одна из частых ошибок — забыть, что JSON — это строка.
let json = '{"name":"Stepan"}';
console.log(json.name);
Это не сработает, потому что это строка.
Нужно сначала распарсить строку:
let json = '{"name":"Stepan"}';
let user = JSON.parse(json);
console.log(user.name);
И только потом работать с полями как с обычным объектом.
Итоговое понимание
JSON — это формат, который позволяет передавать данные между системами в виде строки.
JSON.stringify превращает объект в строку,
JSON.parse делает обратное — превращает строку в объект.
Ключевая идея в том, что JSON — это мост между миром JavaScript и внешними системами.
Если объект — это способ работать с данными внутри программы, то JSON — это способ передавать эти данные наружу и получать их обратно.