Использование методов JSON.parse() и JSON.stringify()

Объект JSON, доступный во всех современных браузерах, предоставляет два полезных метода для работы с контентом в формате JSON: это parse и stringify. Метод JSON.parse() принимает строку JSON и преобразует ее в объект JavaScript. JSON.stringify(), наоборот, принимает объект JavaScript и преобразует его в строку JSON.

Читайте также: Использование JSON в JavaScript

Вот пример:

const myObj = {
name: 'Skip',
age: 2,
favoriteFood: 'Steak'
};
const myObjStr = JSON.stringify(myObj);
console.log(myObjStr);
// "{"name":"Sammy","age":6,"favoriteFood":"Tofu"}"
console.log(JSON.parse(myObjStr));
// Object {name:"Sammy",age:6,favoriteFood:"Tofu"}

Обычно эти методы применяются к объектам, но их также можно применить и к массивам:

const myArr = ['bacon', 'lettuce', 'tomatoes'];
const myArrStr = JSON.stringify(myArr);
console.log(myArrStr);
// "["shark","fish","dolphin"]"
console.log(JSON.parse(myArrStr));
// ["shark","fish","dolphin"]

Метод JSON.parse()

JSON.parse() может принимать в качестве второго аргумента функцию, которая может преобразовывать значения объекта, прежде чем вернуть их пользователю. В этом примере значения объекта преобразуются методом parse в верхний регистр и возвращаются в виде нового объекта:

const user = {
name: 'Sammy',
email: 'Sammy@domain.com',
plan: 'Pro'
};
const userStr = JSON.stringify(user);
JSON.parse(userStr, (key, value) => {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
});

Примечание: В JSON не поддерживаются запятые в конце строки. Поэтому JSON.parse() выдает ошибку, если переданная ему строка заканчивается запятой.

Метод JSON.stringify()

JSON.stringify() может принимать два дополнительных аргумента, первый из которых является функцией replacer, а второй – строковым (String) или числовым (Number) значением, используемым в качестве пробела (space) в возвращаемой строке.

Функция replacer может использоваться для фильтрации значений, поскольку любое значение, возвращенное как undefined, будет исключено из возвращаемой строки:

const user = {
id: 229,
name: 'Sammy',
email: 'Sammy@domain.com'
};
function replacer(key, value) {
console.log(typeof value);
if (key === 'email') {
return undefined;
}
return value;
}
const userStr = JSON.stringify(user, replacer);
// "{"id":229,"name":"Sammy"}"

А вот пример с аргументом space:

const user = {
name: 'Sammy',
email: 'Sammy@domain.com',
plan: 'Pro'
};
const userStr = JSON.stringify(user, null, '...');
// "{
// ..."name": "Sammy",
// ..."email": "Sammy@domain.com",
// ..."plan": "Pro"
// }"

Заключение

В этом мануале вы узнали, как использовать методы JSON.parse() и JSON.stringify(). Если вы хотите узнать больше о работе с JSON в Javascript, ознакомьтесь с нашим мануалом Использование JSON в JavaScript.

Больше информации о JavaScript вы можете найти здесь.

Tags: ,

Добавить комментарий