JSON-objektum-példák: A megmagyarázott karakterláncok és elemzési módszerek

JSON Stringify

A JSON.stringify()módszer egy JSON-biztonságos JavaScript-értéket JSON-kompatibilis karakterlánccá alakít át .

Melyek azok a JSON-biztonságos értékek, amiket feltehetünk! Készítsünk egy listát az összes JSON-nem biztonságos értékről, és bármi, ami nincs a listán, JSON-biztonságosnak tekinthető.

JSON-nem biztonságos értékek:

  • undefined
  • function(){}
  • (ES6 +) Symbol
  • Olyan objektum, amelyben kör alakú hivatkozás (ok) találhatók

Szintaxis

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

A legegyszerűbb és leggyakrabban használt formában:

 JSON.stringify( value )

Paraméterek

value : A „szigorítandó” JavaScript érték.

replacer : (Opcionális) Funkció vagy tömb, amely szűrőként szolgál az értékobjektum tulajdonságainak szűrésére a JSON karakterláncban.

space: (Opcionális) Numerikus vagy karakterlánc érték a JSON karakterlánc behúzásának biztosítására. Ha megad egy numerikus értéket, akkor az a sok szóköz (legfeljebb 10) indentaionként működik minden szinten. Ha karakterlánc értéket ad meg, akkor az a karakterlánc (az első 10 karakterig) behúzásként működik minden szinten.

Visszatérés típusa

A visszatérési típus a módszer: string.

Leírás

A JSON-biztonságos értékeket a megfelelő JSON karakterlánc alakra konvertáljuk. A JSON-nem biztonságos értékek viszont visszatérnek:

  • undefined ha értékként adják át a módszernek
  • null ha tömb elemként adják át őket
  • semmit, ha tulajdonságként adják át egy objektumon
  • hibát dob, ha az objektum körkörös hivatkozásokkal rendelkezik.
 //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(...)másképp viselkedik, ha a neki átadott objektumon van toJSON()meghatározva egy módszer. A toJSON()metódus visszatérési értéke maga az objektum helyett soros lesz.

Ez kivételesen hasznos, ha egy objektum bármilyen illegális JSON-értéket tartalmaz.

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

A replacer

A replacerkorábban említettek szerint egy szűrő jelzi, hogy mely tulajdonságokat kell felvenni a JSON karakterláncba. Ez lehet tömb vagy függvény. Ha egy tömb, a helyettesítő csak azoknak a tulajdonságoknak a karakterlánc-reprezentációját tartalmazza, amelyeket fel kell venni a JSON karakterláncba.

 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

Ha replaceregy függvény, akkor egyszer meghívja magát az objektumot, majd egyszer az objektum minden tulajdonságát, és minden alkalommal átad két argumentumot, kulcsot és értéket . Ha ki akar hagyni egy kulcsot a sorosításban, undefinedvissza kell adnia. Ellenkező esetben a megadott értéket vissza kell adni. Ha ezen értékek egyike maga is objektum, akkor a replacerfüggvény ezeket rekurzívan is sorosítja.

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

Ha egy tömböt átadnak bármely elemének, JSON.stringify()és replacervisszatér undefinedannak bármely eleméhez, akkor az elem értéke helyére lép null. replacerfüggvények nem távolíthatnak el értékeket egy tömbből.

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

A space

A spacebehúzáshoz használt paraméter JSON.stringify()szebbé teszi az eredményt .

 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

A JSON.parse()módszer elemez egy karakterláncot, és létrehoz egy új objektumot, amelyet egy karakterlánc ír le.

Szintaxis:

 JSON.parse(text [, reviver])

Paraméterek:

text A karakterlánc, amelyet JSON-ként kell elemezni

reviver(Opcionális) A függvény megkapja keyés valueparaméterként. Ezzel a funkcióval átalakítható az eredmény értéke.

Itt van egy példa a használatára 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

Repl.it Demo

Itt van egy példa 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 }

A fenti példában az összes numerikus érték szorozva van 10- Repl.it Demo

További információ a JSON-ról:

  • JSON szintaxis
  • Kapcsolja webhelyét mobilalkalmazássá, 7 sor JSON-nal