Работа с JSON в современных браузерах: методы JSON.parse и JSON.stringify

16d7a4b7 3005 49f3 b612 70e734844da8 HTML

В современных браузерах доступен объект 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 открывает возможности для более сложной обработки данных, делая ваш код более универсальным и удобочитаемым.

Оцените статью