Eksempler på JSON-objekter: Stringify and Parse Methods Explained

JSON Stringify

Den JSON.stringify()metode konverterer et JSON-safe JavaScript værdi til en JSON kompatibel streng.

Hvad er JSON-sikre værdier man kan spørge! Lad os lave en liste over alle JSON-usikre værdier, og alt, hvad der ikke er på listen, kan betragtes som JSON-sikkert.

JSON-usikre værdier:

  • undefined
  • function(){}
  • (ES6 +) Symbol
  • Et objekt med cirkulære referencer

Syntaks

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

I sin enkleste og mest anvendte form:

 JSON.stringify( value )

Parametre

value : JavaScript-værdien skal 'strenges'.

replacer : (Valgfrit) En funktion eller et array, der fungerer som et filter for egenskaberne for det værdiobjekt, der skal inkluderes i JSON-strengen.

space: (Valgfrit) En numerisk værdi eller strengværdi, der giver indrykket til JSON-strengen. Hvis der angives en numerisk værdi, fungerer mange mellemrum (op til 10) som indention på hvert niveau. Hvis der gives en strengværdi, fungerer denne streng (op til de første 10 chracters) som indrykning på hvert niveau.

Returtype

Returtypen af fremgangsmåden er: string.

Beskrivelse

De JSON-sikre værdier konverteres til deres tilsvarende JSON-strengform. De JSON-usikre værdier returnerer på den anden side:

  • undefined hvis de sendes som værdier til metoden
  • null hvis de sendes som et matrixelement
  • intet, hvis de sendes som egenskaber på et objekt
  • kaster en fejl, hvis det er et objekt med cirkulære referencer.
 //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(...)opfører sig forskelligt, hvis et objekt, der sendes til det, har en toJSON()metode defineret. Returværdien fra toJSON()metoden serieres i stedet for selve objektet.

Dette er usædvanligt praktisk, når et objekt indeholder en ulovlig JSON-værdi.

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

Det replacer

Som replacertidligere nævnt er det et filter, der angiver, hvilke egenskaber der skal inkluderes i JSON-strengen. Det kan enten være en matrix eller en funktion. Når en matrix indeholder udskiftningsenheden kun strengrepræsentationer af de egenskaber, der skal inkluderes i JSON-strengen.

 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

Hvis replacerer en funktion, kaldes den en gang for selve objektet og derefter én gang for hver egenskab i objektet, og hver gang sendes to argumenter, nøgle og værdi . For at springe en nøgle over i serieiseringen, undefinedskal den returneres. Ellers skal den angivne værdi returneres. Hvis nogen af ​​disse værdier er objekter i sig selv, replacerserialiserer funktionen dem også rekursivt.

 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}'

Hvis en matrix overføres til JSON.stringify()og replacerreturnerer undefinedfor et af dets elementer, erstattes elementets værdi med null. replacerfunktioner kan ikke fjerne værdier fra en matrix.

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

Det space

Den spaceparameter anvendes til indrykning gør resultatet af JSON.stringify()smukkere.

 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

Den JSON.parse()Fremgangsmåden analyserer en streng og konstruere et nyt objekt beskrevet af en streng.

Syntaks:

 JSON.parse(text [, reviver])

Parametre:

text Strengen, der skal analyseres som JSON

reviver(Valgfrit) Funktionen modtager keyog valuesom argumenter. Denne funktion kan bruges til at transformere resultatværdien.

Her er et eksempel på, hvordan du bruger 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

Udskift demo

Her er et eksempel med 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 }

I ovenstående eksempel ganges alle numeriske værdier med 10- Udskift demo

Mere info om JSON:

  • JSON-syntaks
  • Gør dit websted til en mobilapp med 7 linjer JSON