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

Методы объекта JSON

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

Пример:


  const PersonObj = {
   name: 'Михаил',
   age: 27,
   favoriteFood: 'Блины'
  };

  const ObjStr = JSON.stringify(PersonObj);

  console.log(ObjStr);
  // "{"name":"Михаил","age":27,"favoriteFood":"Блины"}"

  console.log(JSON.parse(ObjStr));
  // Object {name: "Михаил  ", age: 27, favoriteFood: "Блины"}

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


  const array = ['мясо', 'мандарины', 'томаты'];
  const array_str = JSON.stringify(array);

  console.log(array_str);
  // "["мясо","мандарины","томаты"]"

  console.log(JSON.parse(array_str));
  // ["мясо","мандарины","томаты"]

JSON.parse()

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


  const User = {
   name: 'Виталий',
   email: 'vitia\@myrusakov.com',
   accountType: 'Pro'
  };

  const userStr = JSON.stringify(User);

  JSON.parse(userStr, (key, value) => {

   if (typeof value === 'string') {
    return value.toUpperCase();
   }

   return value;
  });

JSON.stringify()

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

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


  const user = {
   id: 003,
   name: 'Борис',
   email: 'boris\@site.com'
  };


  function replacer(key, value) {

   console.log(typeof value);

   if (key === 'email') {
    return undefined;
   }

   return value;
  }

  const userStr = JSON.stringify(user, replacer);
  // "{"id":003,"name":"Борис"}"

Пример с передачей третьего аргумента.


  const user = {
   name: 'Борис',
   email: 'boris@site.com',
   accountType: 'Pro'
  }


  const userStr = JSON.stringify(user, null, '...');

Результат:


  "{
   ..."name": "Борис",
   ..."email": "boris@site.com",
   ..."plan": "Pro"
  }"

Таким образом, мы с Вами познакомились с двумя важными методами объекта JSON в JavaScript.