JSON (JavaScript Object Notation), JavaScript Object Notation, ist ein leichtes Datenaustauschformat. Es ist für Programmierer sehr praktisch, Daten zu verarbeiten, und es ist auch für Maschinen praktisch, Daten zu analysieren und zu generieren.
JSON ist ein leichtes Datenaustauschformat. Das Innere einer JSON-Formatdatei kann wie folgt aussehen:
{ "name": "hanzichi", "sex": "male" }
Es sieht so aus, als wären es alles Schlüssel-Wert-Paare, die js-Objekten sehr ähnlich sind, oder? Das ist richtig, aber gleichzeitig drückte JSON seine Unzufriedenheit aus. Ich muss meine eigene Persönlichkeit haben, daher muss der Schlüssel im Schlüssel-Wert-Paar doppelte Anführungszeichen verwenden. Gleichzeitig wird festgelegt, dass bestimmte Anforderungen an den Wert des Schlüssel-Wert-Paares gestellt werden:
JSON-Wert kann sein:
Zahl (Ganzzahl oder Gleitkommazahl)
Zeichenfolge (in doppelten Anführungszeichen)
Logischer Wert (wahr oder falsch)
Array (in eckigen Klammern)
Objekt (in geschweiften Klammern)
null
Außer den oben genannten 6 Typen gibt es keine anderen. Es gibt kein undefiniertes oder NAN-ähnliches JS, und JSON weigert sich, verwendet zu werden.
Wie verwende ich JSON?
JSON wird während des Dateninteraktionsprozesses im Allgemeinen in Form von Zeichenfolgen übertragen. Daher ist es für js besonders wichtig, wie JSON-Zeichenfolgen und js-Objekte ineinander und voneinander konvertiert werden.
Bewertungsmethode (JSON-Zeichenfolge -> js-Objekt)
var jsonStr = '{"name": "hanzichi", "sex": "male"}'; var ans = eval('(' + jsonStr + ')'); console.log(ans.name, ans.sex); // hanzichi male
Die Auswertungsfunktion ist sehr schnell, kann jedoch jeden Javascript-Code kompilieren, was zu Sicherheitsproblemen führen kann. Die Verwendung von eval basiert auf der Annahme, dass die eingehenden Codeparameter zuverlässig sind. In einigen Fällen ist der Client möglicherweise nicht vertrauenswürdig. Aus Sicherheitsgründen ist es am besten, einen JSON-Parser zu verwenden. Ein JSON-Parser akzeptiert nur JSON-Text und ist daher sicherer.
JSON.parse(json字符串 -> js对象) var jsonStr = '{"name": "hanzichi", "sex": "male"}'; var obj = JSON.parse(jsonStr); console.log(typeof obj, obj); // object Object {name: "hanzichi", sex: "male"}
Der zweite Parameter kann eine Funktion sein und der Wert kann gelöscht werden:
var jsonStr = '{"name": "hanzichi", "sex": "male", "age": 10}'; var obj = JSON.parse(jsonStr, function(key, value) { if(key === 'name') { return 'my name is ' + value; } return value; }); console.log(typeof obj, obj); // object Object {name: "my name is hanzichi", sex: "male", age: 10} JSON.stringify(js对象 -> json字符串) var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj); console.log(jsonStr); // {"name":"hanzichi","sex":"male","age":"10"}
Sie können auch einen Parameter hinzufügen, um die Attribute anzugeben, die in JSON-Strings konvertiert werden müssen (in Array-Form werden nur js-Objektattribute mit demselben Namen wie das Array konvertiert):
var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, ['name']); console.log(jsonStr); // {"name":"hanzichi"}
Der zweite Parameter kann auch eine Funktion sein, die das Attribut löschen kann, das die Bedingungen erfüllt (oder den Attributwert ändern kann. Keine Rückgabe bedeutet, dass das Attribut aufgegeben wird, und der Rückgabewert gibt den Wert des Schlüssels in der JSON-Zeichenfolge an )
var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, function(key, value) { if(key === 'name') { return 'my name is ' + value; } return value; }); console.log(jsonStr); // {"name":"my name is hanzichi","sex":"male","age":"10"}
Es kann auch einen dritten Parameter geben, der eine Zahl oder eine Zeichenfolge sein kann.
Wenn es sich um eine Zahl handelt, bedeutet dies eine Einrückung. Wenn die Zahl 10 überschreitet, wird sie als 10 verarbeitet.
var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, null, 4); console.log(jsonStr); // { // "name": "hanzichi", // "sex": "male", // "age": "10" // }
kann auch eine Zeichenfolge sein. Diese Zeichenfolgen werden vor den Attributen als Präfixe hinzugefügt. Wenn die Zeichenfolgenlänge 10 überschreitet, werden ebenfalls nur 10 abgefangen:
var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, null, 'pre'); console.log(jsonStr); // { // pre"name": "hanzichi", // pre"sex": "male", // pre"age": "10" // }
Ich habe hier eine Frage. Ich denke, die Ausgabe sollte in der folgenden Form erfolgen...
{ "prename": "hanzichi", "presex": "male", "preage": "10" }
Wenn jemand es weiß, sagen Sie es mir bitte...
Zusammenfassung
Natürlich können die Methoden JSON.parse() und JSON.stringify() aufgrund einiger Mängel im legendären ie8 (und darunter) nicht verwendet werden, und eval() scheint unsicher zu sein kann sich auf json2.js beziehen.
Der obige Inhalt gibt Ihnen eine Einführung in JSON und eine Zusammenfassung seiner Verwendung. Ich hoffe, er wird Ihnen hilfreich sein!