Поиск по сайту:

Как использовать JSON.parse() и JSON.stringify()


Введение

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

JSON.parse()

JSON.parse() берет строку JSON и преобразует ее в объект JavaScript.

let userStr = '{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}';

let userObj = JSON.parse(userStr);

console.log(userObj);

Выполнение этого кода приведет к следующему выводу:

Output
{name: 'Sammy', email: 'sammy@example.com', plan: 'Pro'} email: "sammy@example.com" name: "Sammy" plan: "Pro"

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

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

Здесь значения объекта преобразуются в верхний регистр в возвращаемом объекте метода parse:

let userStr = '{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}';

let userObj = JSON.parse(userStr, (key, value) => {
  if (typeof value === 'string') {
    return value.toUpperCase();
  }
  return value;
});

console.log(userObj);

Выполнение этого кода приведет к следующему выводу:

Output
{name: 'SAMMY', email: 'SAMMY@EXAMPLE.COM', plan: 'PRO'} email: "SAMMY@EXAMPLE.COM" name: "SAMMY" plan: "PRO"

Значения были преобразованы в символы верхнего регистра.

JSON.stringify()

JSON.stringify() принимает объект JavaScript и преобразует его в строку JSON.

let userObj = {
  name: "Sammy",
  email: "sammy@example.com",
  plan: "Pro"
};

let userStr = JSON.stringify(userObj);

console.log(userStr);

Выполнение этого кода приведет к следующему выводу:

Output
{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}

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

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

let userObj = {
  name: "Sammy",
  email: "sammy@example.com",
  plan: "Pro"
};

function replacer(key, value) {
  console.log(typeof value);
  if (key === 'email') {
    return undefined;
  }
  return value;
}

let userStrReplacer = JSON.stringify(userObj, replacer);

console.log(userStrReplacer);

Выполнение этого кода приведет к следующему выводу:

Output
{"name":"Sammy","plan":"Pro"}

Пара ключ-значение email удалена из объекта.

И пример с переданным аргументом space:

let userObj = {
  name: "Sammy",
  email: "sammy@example.com",
  plan: "Pro"
};

let userStrSpace = JSON.stringify(user, null, '...');

console.log(userStrSpace);

Выполнение этого кода приведет к следующему выводу:

Output
{ ..."name": "Sammy", ..."email": "sammy@example.com", ..."plan": "Pro" }

Отступ заменен на ....

Заключение

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

Для получения дополнительной информации о программировании в JavaScript посетите нашу страницу с темами JavaScript, посвященную упражнениям и проектам по программированию.