Примери ЈСОН објеката: Објашњени методи стрингификовања и рашчлањивања

ЈСОН Стрингифи

JSON.stringify()Начин претвара ЈСОН сигуран ЈаваСцрипт вредност на компатибилним стринг ЈСОН.

Које су ЈСОН-безбедне вредности које се могу питати! Направимо листу свих ЈСОН-небезбедних вредности и све што није на листи може се сматрати ЈСОН-безбедним.

ЈСОН-небезбедне вредности:

  • undefined
  • function(){}
  • (ЕС6 +) Symbol
  • Предмет у коме су кружне референце

Синтакса

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

У свом најједноставнијем и најчешће коришћеном облику:

 JSON.stringify( value )

Параметри

value : ЈаваСцрипт вредност коју треба „стрингификовати“.

replacer : (Опционално) Функција или низ који служи као филтер за својства објекта вредности који ће бити укључени у ЈСОН низ.

space: (Необавезна) Нумеричка вредност или вредност низа за пружање увлачења ЈСОН низу. Ако је дата нумеричка вредност, толико размака (до 10) делује као увлака на сваком нивоу. Ако је дата вредност низа, тај низ (до првих 10 знакова) делује као увлачење на сваком нивоу.

Тип повратка

Повратни тип метода је: string.

Опис

ЈСОН-безбедне вредности претварају се у њихов одговарајући ЈСОН облик низа. С друге стране, ЈСОН-небезбедне вредности враћају:

  • 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-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}"

Тхе replacer

Као replacerшто је раније поменуто, је филтер који показује која својства треба да буду укључена у ЈСОН низ. То може бити низ или функција. Када је низ, замена садржи репрезентације низа само оних својстава која треба да буду укључена у ЈСОН низ.

 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

Ако replacerје функција, позваће се једном за сам објекат, а затим једном за свако својство у објекту и сваки пут се предају два аргумента, кључ и вредност . Да бисте прескочили кључ у сериализацији, undefinedтреба га вратити. У супротном, наведену вредност треба вратити. Ако су било које од ових вредности саме објекти, replacerфункција их такође рекурзивно сериализује.

 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()и replacerврати undefinedза било који од његових елемената, вредност елемента се замењује са null. replacerфункције не могу уклонити вредности из низа.

 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]"

Тхе space

spaceПараметар се користи за увлачење чини резултат 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(text [, reviver])

Параметри:

text Низ за рашчлањивање као ЈСОН

reviver(Опционално) Функција ће примити keyи valueкао аргументе. Ова функција се може користити за трансформисање вредности резултата.

Ево примера како се користи 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

Репл.ит Демо

Ево примера са 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- Репл.ит Демо

Више информација о ЈСОН-у:

  • ЈСОН синтакса
  • Претворите своју веб локацију у мобилну апликацију са 7 линија ЈСОН-а