Was ist JSON?
JavaScript-Objektnotation.
JSON ist ein leichtes Datenaustauschformat. Das Innere einer JSON-Formatdatei kann so aussehen:
{ "name": "hanzichi", "sex": "male" }
Es sieht alles aus wie Schlüssel-Wert-Schlüssel. Ja, es sieht aus wie ein js Objekt, 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 gelten bestimmte Anforderungen an den Wert des Schlüssel-Wert-Paares:
JSON-Wert kann sein:
Zahl (Ganzzahl oder Gleitkommazahl)
String (in 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 wie 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.
eval method (json string -> js object)
var jsonStr = '{"name": "hanzichi", "sex": "male"}'; var ans = eval('(' + jsonStr + ')'); console.log(ans.name, ans.sex); // hanzichi male
Die eval-Funktion ist sehr schnell, kann aber 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 string -> js object)
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 object-> json string)
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 einen JSON-String konvertiert werden müssen (in Array-Form das js-Objektattribut). mit dem gleichen Namen wie das Array, das konvertiert wird):
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, Sie können das Attribut, das die Bedingungen erfüllt, löschen (oder ändern). Der Attributwert, keine Rückgabe bedeutet, dass das Attribut aufgegeben wird, der Rückgabewert stellt den Wert des Schlüssels in der JSON-Zeichenfolge dar)
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 ein sein kann Zahl oder eine Zeichenfolge.
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" // }
Zusammenfassung
Natürlich kann der legendäre IE8 (und darunter) aufgrund einiger Fehler die Methoden JSON.parse() und JSON.stringify() nicht verwenden, und es erscheint eval() unsicher sein. Wenn Sie mit ihnen kompatibel sein möchten, können Sie json2.js zitieren.