JSON: сериализация и десериализация данных в JavaScript
НАВИГАЦИЯ ПО СТРАНИЦЕ
Сериализация с 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).