В современных браузерах доступен объект JSON
(JavaScript Object Notation), содержащий методы parse
и stringify
, которые служат для разбора и преобразования значений, представленных в формате JSON.
JSON.parse()
Метод JSON.parse()
принимает JSON-строку в качестве аргумента и преобразует её в объект JavaScript.
const myObjStr = '{"name":"Skip","age":2,"favoriteFood":"Steak"}';
const myObj = JSON.parse(myObjStr);
console.log(myObj);
// {name: "Skip", age: 2, favoriteFood: "Steak"}
JSON.stringify()
Метод JSON.stringify()
принимает объект в качестве аргумента и преобразует его в JSON-строку.
const myObj = {
name: 'Skip',
age: 2,
favoriteFood: 'Steak'
};
const myObjStr = JSON.stringify(myObj);
console.log(myObjStr);
// "{"name":"Skip","age":2,"favoriteFood":"Steak"}"
Примеры с массивами
Методы parse
и stringify
могут использоваться и для массивов:
const myArr = ['bacon', 'lettuce', 'tomatoes'];
const myArrStr = JSON.stringify(myArr);
console.log(myArrStr);
// "["bacon","lettuce","tomatoes"]"
console.log(JSON.parse(myArrStr));
// ["bacon","lettuce","tomatoes"]
Дополнительные аргументы метода JSON.parse()
Метод JSON.parse()
может принимать второй аргумент – функцию reviver
, которая позволяет преобразовывать значения объекта перед возвращением результата.
const userStr = '{"name":"John","email":"john@awesome.com","plan":"Pro"}';
const user = JSON.parse(userStr, (key, value) => {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
});
console.log(user);
// {name: "JOHN", email: "JOHN@AWESOME.COM", plan: "PRO"}
Дополнительные аргументы метода JSON.stringify()
Метод JSON.stringify()
может принимать два дополнительных аргумента: функцию или массив replacer
и строковый или числовой аргумент space
для красивого форматирования результирующей строки.
Использование replacer
Функция replacer
может использоваться для фильтрации значений в процессе преобразования объекта в строку. Например, все значения, вернувшие undefined
, будут исключены из итоговой строки:
const user = {
id: 229,
name: 'John',
email: 'john@awesome.com'
};
function replacer(key, value) {
if (key === 'email') {
return undefined;
}
return value;
}
const userStr = JSON.stringify(user, replacer);
console.log(userStr);
// "{"id":229,"name":"John"}"
Использование space
Аргумент space
используется для форматирования результирующей строки:
const user = {
name: 'John',
email: 'john@awesome.com',
plan: 'Pro'
};
const userStr = JSON.stringify(user, null, 2);
console.log(userStr);
/*
{
"name": "John",
"email": "john@awesome.com",
"plan": "Pro"
}
*/
Заключение
Методы JSON.parse()
и JSON.stringify()
являются мощными инструментами для работы с данными в формате JSON. Они позволяют легко преобразовывать строки в объекты и обратно, а также предлагают гибкость в обработке и форматировании данных. Использование дополнительных аргументов reviver
и replacer
открывает возможности для более сложной обработки данных, делая ваш код более универсальным и удобочитаемым.