★ wanayoo — archive 1999 https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringifyNouvelle recherche | Portail wanayoo

Check out Firefox Developer Edition, the first browser built for developers like you. http://mzl.la/112VrtT

mozilla
Your Search Results

    JSON.stringify()

    This translation is incomplete. Please help translate this article from English.

    Общее

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

    Синтаксис

    JSON.stringify(value[, replacer [, space]])

    Параметры

    value
    Значение, которое будет преобразовано в jSON строку.
    replacer Optional
    Если функция, то преобразует значения и свойства по ходу трансформации в строку; если массив, то определяет набор свойств, которые попадут в конечную строку.
    Подробное описание доступно в статье руководства по JavaScript Using native JSON.
    space Optional
    Делает результат красиво отформатированным (расставляя пробелы).

    Описание

    JSON.stringify преобразует значение в jSON со следующими оговорками:

    • Порядок преобразования свойств объектов, не являющихся массивами не гарантируется. Не пологайтесь на порядок свойств во время преобразования
    • Boolean, Number, и String преобразуются в соответствующие значения-примитивы в соответствии с традиционным соглашением о семантике преобразований.
    • Значение undefined, функция, или символ (Symbol), встреченные во время преобразования, будут либо опущены (если это объект), либо превращены в null (если это массив).
    • Все свойства, имеющие ключ в виде символа (Symbol) будут полностью проигнорированы, даже при использовании функции replacer.
    JSON.stringify({});                        // '{}'
    JSON.stringify(true);                      // 'true'
    JSON.stringify("foo");                     // '"foo"'
    JSON.stringify([1, "false", false]);       // '[1,"false",false]'
    JSON.stringify({ x: 5 });                  // '{"x":5}'
    
    Examples:
    var JavascriptObject = {name: "George", lastname: "Batalinski"};
    var ValidJSON = JSON.stringify({name: "George", lastname: "Batalinski"});
    
    JSON.stringify({x: 5, y: 6});              
    // '{"x":5,"y":6}' or '{"y":6,"x":5}'
    JSON.stringify([new Number(1), new String("false"), new Boolean(false)]); 
    // '[1,"false",false]'
    
    // Symbols:
    JSON.stringify({x: undefined, y: Object, z: Symbol("")}); 
    // '{}'
    JSON.stringify({[Symbol("foo")]: "foo"});                 
    // '{}'
    JSON.stringify({[Symbol.for("foo")]: "foo"}, [Symbol.for("foo")]);
    // '{}'
    JSON.stringify({[Symbol.for("foo")]: "foo"}, function (k, v) {
      if (typeof k === "symbol"){
        return "a symbol";
      }
    });
    // '{}'
    

    Аргумент определяющий отступ

    Аргумент определяющий отступ можно использовать для контроля за форматированием отступов в конечной строке. Если передано число, то каждый последующий уровень вложенности будет дополнен отступом из пробелов, количество которых соответствует числу (до 10 пробелов). Если передана строка, то отступы будут соответствовать этой строке (либо первым 10 её символам). 

    JSON.stringify({ a: 2 }, null, " ");   // '{\n "a": 2\n}'

    Использование tab-символа имитирует стандартный вид при использовании красивого форматирования:

    JSON.stringify({ uno: 1, dos : 2 }, null, '\t')
    // returns the string:
    // '{            \
    //     "uno": 1, \
    //     "dos": 2  \
    // }' 

    toJSON поведение

    Если объект, преобразуемый в строку имеет в себе свойство с именем toJSON, значение которого является функцией, то метод toJSON изменит стандартное поведение: вместо преобразования переданного объекта  мы получим результат, возвращенный функцией toJSON. Например:

    var obj = {
      foo: 'foo',
      toJSON: function () {
        return 'bar';
      }
    };
    JSON.stringify(obj);      // '"bar"'
    JSON.stringify({x: obj}); // '{"x":"bar"}'
    

    Пример использования  JSON.stringify связке с localStorage

    В случае, когда вы хотите сохранить созданный объект таким образом, чтобы его можно было восстановить даже после закрытия браузера, имеет смысл воспользоваться следующим примером:

    Функции не являются валиднымм типом jSON данных, поэтому они не сработают. Так же, некоторые виды объектов, такие как Date будут преобразованы в строку после применения JSON.parse()

    // Creating an example of JSON
    var session = {
        'screens' : [],
        'state' : true
    };
    session.screens.push({"name":"screenA", "width":450, "height":250});
    session.screens.push({"name":"screenB", "width":650, "height":350});
    session.screens.push({"name":"screenC", "width":750, "height":120});
    session.screens.push({"name":"screenD", "width":250, "height":60});
    session.screens.push({"name":"screenE", "width":390, "height":120});
    session.screens.push({"name":"screenF", "width":1240, "height":650});
    
    // Converting the JSON string with JSON.stringify 
    // then saving with localStorage in the name of session
    localStorage.setItem('session', JSON.stringify(session));
    
    // Example of how to transform the String generated through 
    // JSON.stringify and saved in localStorage in JSON object again
    var restoredSession = JSON.parse(localStorage.getItem('session'));
    
    // Now restoredSession variable contains the object that was saved
    // in localStorage
    console.log(restoredSession);
    

    Пример использования параметра replacer у JSON.stringify(javascriptObject, method);

    function replacer(key, value) {
      if (typeof value === "string") {
        return undefined;
      }
      return value;
    }
    
    var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
    var jsonString = JSON.stringify(foo, replacer);
    

     

    Спецификация

    Спецификация Статус Комментарий
    ECMAScript 5.1 (ECMA-262)
    Определение 'JSON.stringify' в этой спецификации.
    Стандарт Первое определение.
    Реализовано in JavaScript 1.7.
    ECMAScript 6 (ECMA-262)
    Определение 'JSON.stringify' в этой спецификации.
    Черновик  

    Совместимость с браузерами

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support (Да) 3.5 (1.9.1) 8.0 10.5 4.0
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support (Да) (Да) 1.0 (1.0) (Да) (Да) (Да)

    Based on Kangax's compat table.

    Смотрите так же

    Метки документа и участники

    На данную страницу внесли свой вклад: fullfs
    Обновлялась последний раз: fullfs,