Автор оригинала: FreeCodeCamp Community Member.
Json Stringify
Json.stringify ()
Метод преобразует JSON-Safe Значение JavaScript к строке совместимой JSON.
Какие ценности json-Safe можно задать! Давайте составьте список всех ценностей небезопасных JSON и все, что не в списке, можно считать JSON-Safe.
JSON-небезопасные ценности:
неопределенный
Функция () {}
- (ES6 +)
Символ
- Объект с циркулярной ссылкой (ы) в нем
Синтаксис
JSON.stringify( value [, replacer [, space]])
В его простейшей и наиболее используемой форме:
JSON.stringify( value )
Параметры
ценность
: Значение JavaScript, чтобы быть «строгими».
Заменяющий
: (Необязательно) функция или массив, который служит фильтром для свойств объекта значения, который будет включен в строку JSON.
пространство
: (Необязательно) числовое или строковое значение для предоставления отступа к строке JSON. Если приведено числовое значение, то, что многие пробелы (до 10) действуют в качестве антеиона на каждом уровне. Если приведено строковое значение, эта строка (до первого 10 Chracter) действует как отступ на каждом уровне.
Тип возврата
Тип возврата метода: строка
Отказ
Описание
Значения Safe JSON преобразуются в соответствующую форму JSON String. JSON-небезопасные значения с другой стороны возврата:
undefined
Если они передаются как значения для методаnull
Если они передаются как элемент массива- Ничего, если пропущено как свойства на объекте
- бросает ошибку, если его объект с циркулярными ссылками (ы) на нем.
//JSON-safe values JSON.stringify({}); // '{}' JSON.stringify(true); // 'true' JSON.stringify('foo'); // '"foo"' JSON.stringify([1, 'false', false]); // '[1,"false",false]' JSON.stringify({ x: 5 }); // '{"x":5}' JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)) // '"2006-01-02T15:04:05.000Z"' //JSON-unsafe values passed as values to the method JSON.stringify( undefined ); // undefined JSON.stringify( function(){} ); // undefined //JSON-unsafe values passed as array elements JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }); // '{"x":[10,null,null,null]}' //JSON-unsafe values passed as properties on a object JSON.stringify({ x: undefined, y: Object, z: Symbol('') }); // '{}' //JSON-unsafe object with circular reference on it var o = { }, a = { b: 42, c: o, d: function(){} }; // create a circular reference inside `a` o.e = a; // would throw an error on the circular reference // JSON.stringify( a );
Json.stringify (...)
ведет себя по-разному, если объект передан на него, имеет Tojson ()
Метод определен на нем. Возвращаемое значение из Tojson ()
Метод будет сериализован вместо самого объекта.
Это приходит исключительно удобно, когда объект содержит любые незаконные значения JSON.
//JSON-unsafe values passed as properties on a object var obj = { x: undefined, y: Object, z: Symbol('') }; //JSON.stringify(obj); logs '{}' obj.toJSON = function(){ return { x:"undefined", y: "Function", z:"Symbol" } } JSON.stringify(obj); //"{"x":"undefined","y":"Function","z":"Symbol"}" //JSON-unsafe object with circular reference on it var o = { }, a = { b: 42, c: o, d: function(){} }; // create a circular reference inside `a` o.e = a; // would throw an error on the circular reference // JSON.stringify( a ); // define a custom JSON value serialization a.toJSON = function() { // only include the `b` property for serialization return { b: this.b }; }; JSON.stringify( a ); // "{"b":42}"
Замена
Заменяющий
Как уже упоминалось ранее, является фильтром, который указывает, какие свойства должны быть включены в строку JSON. Это может быть либо массив или функция. Когда массив заменитель содержит строковые представления только те свойства, которые должны быть включены в строку JSON.
var foo = {foundation: 'Mozilla', model: 'box', week: 45, transport: 'car', month: 7}; JSON.stringify(foo, ['week', 'month']); // '{"week":45,"month":7}', only keep "week" and "month" properties
Если Заменяющий
Это функция, она будет вызываться один раз для самого объекта, а затем один раз для каждого свойства в объекте, и каждый раз пропускается два аргумента, ключ и ценность Отказ Пропустить ключ В сериализации undefined
должно быть возвращено. В противном случае ценность предоставленные должны быть возвращены. Если кто-то из этих Значения сами объекты, Заменяющий
Функция также рекурсивно сериала.
function replacer(key, value) { // Filtering out properties if (typeof value === 'string') { return undefined; } return value; } var foo = {foundation: 'Mozilla', model: 'box', week: 45, transport: 'car', month: 7}; JSON.stringify(foo, replacer); // '{"week":45,"month":7}'
Если массив передан Json.stringify ()
и Заменяющий
Возвращает undefined
Для любого из его элементов значение элемента заменяется на null
Отказ Заменяющий
Функции не могут удалять значения из массива.
function replacer(key, value) { // Filtering out properties if (typeof value === 'string') { return undefined; } return value; } var foo = ['Mozilla', 'box', 45, 'car', 7]; JSON.stringify(foo, replacer); // "[null,null,45,null,7]"
Космос
пространство
Параметр, используемый для отступа, делает результат Json.stringify ()
красивее.
var a = { b: 42, c: "42", d: [1,2,3] }; JSON.stringify( a, null, 3 ); // "{ // "b": 42, // "c": "42", // "d": [ // 1, // 2, // 3 // ] // }" JSON.stringify( a, null, "-----" ); // "{ // -----"b": 42, // -----"c": "42", // -----"d": [ // ----------1, // ----------2, // ----------3 // -----] // }"
JSON PARSE.
Json.parse ()
Метод определяет строку и построить новый объект, описанный строкой.
Синтаксис:
JSON.parse(text [, reviver])
Параметры:
текст
Строка для анализа как JSON
Reviver
(Необязательно) Функция получит ключ
и ценность
как аргументы. Эта функция может быть использована для преобразования значения результата.
Вот пример того, как использовать Json.parse ()
:
var data = '{"foo": "bar"}'; console.log(data.foo); // This will print `undefined` since `data` is of type string and has no property named as `foo` // You can use JSON.parse to create a new JSON object from the given string var convertedData = JSON.parse(data); console.log(convertedData.foo); // This will print `bar
Rep.it demo.
Вот пример с Reviver
:
var data = '{"value": 5}'; var result = JSON.parse(data, function(key, value) { if (typeof value === 'number') { return value * 10; } return value; }); // Original Data console.log("Original Data:", data); // This will print Original Data: {"value": 5} // Result after parsing console.log("Parsed Result: ", result); // This will print Parsed Result: { value: 50 }
В приведенном выше примере все числовые значения умножаются на 10
– Rep.it demo.
Больше информации на JSON:
- JSON Syntax.
- Поверните свой веб-сайт в мобильное приложение с 7 линиями JSON