JSON: сериализация и десериализация данных в JavaScript

НАВИГАЦИЯ ПО СТРАНИЦЕ

JSON Сериализация Десериализация Обработка исключений Преобразование
ПОЛНЫЙ ОТВЕТ
БЕЗ ВОДЫ
Без воды — краткий вариант ответа,
легко понять и запомнить

JSON (JavaScript Object Notation) — это текстовый формат для обмена данными, который широко используется в веб-разработке. JSON предоставляет удобный способ сериализации (преобразования в строку) и десериализации (преобразования из строки в объект) данных. В JavaScript существуют методы для работы с JSON: JSON.stringify() и JSON.parse().

Сериализация с JSON.stringify():

JSON.stringify() используется для преобразования объекта JavaScript в строку JSON. Этот метод может принимать различные типы данных, включая объекты, массивы, строки, числа, булевы значения и null.

Пример:

const person = {
  name: 'John',
  age: 30,
  hobbies: ['reading', 'swimming'],
};

const jsonStr = JSON.stringify(person);
console.log(jsonStr);

Результат будет строкой JSON:

{"name":"John","age":30,"hobbies":["reading","swimming"]}

Десериализация с JSON.parse():

JSON.parse() используется для преобразования строки JSON обратно в объект JavaScript. Он принимает строку JSON и возвращает соответствующий объект.

Пример:

const jsonStr = '{"name":"John","age":30,"hobbies":["reading","swimming"]}';
const person = JSON.parse(jsonStr);
console.log(person.name); // Выведет "John"

Обработка исключений:

При использовании JSON.parse(), необходимо обрабатывать ошибки, которые могут возникнуть, если строка JSON недопустима или повреждена.

Пример:

const invalidJsonStr = 'invalid json';

try {
  const data = JSON.parse(invalidJsonStr);
  console.log(data);
} catch (error) {
  console.error('Ошибка при разборе JSON:', error);
}

Преобразование пользовательских объектов:

Чтобы сериализовать и десериализовать пользовательские объекты, вы можете определить методы toJSON() и fromJSON() в этих объектах.

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  toJSON() {
    return {
      name: this.name,
      age: this.age,
    };
  }

  static fromJSON(json) {
    return new Person(json.name, json.age);
  }
}

const person = new Person('Alice', 25);
const jsonStr = JSON.stringify(person);
console.log(jsonStr);

const restoredPerson = Person.fromJSON(JSON.parse(jsonStr));
console.log(restoredPerson);

JSON является универсальным форматом для обмена данными между разными языками и технологиями, и его использование в JavaScript делает работу с данными удобной и эффективной. Однако будьте внимательны при работе с данными из ненадежных источников, чтобы избежать безопасности данных (например, атаки на основе JSON, известной как JSON Injection).