Heim > Web-Frontend > js-Tutorial > Hauptteil

Einführung in JSON und Zusammenfassung der Kenntnisse in use_javascript

WBOY
Freigeben: 2016-05-16 15:14:28
Original
1220 Leute haben es durchsucht

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"
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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"}
Nach dem Login kopieren

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"}
Nach dem Login kopieren

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"}
Nach dem Login kopieren

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"}
Nach dem Login kopieren

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"
// }
Nach dem Login kopieren

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"
// }
Nach dem Login kopieren

Ich habe hier eine Frage. Ich denke, die Ausgabe sollte in der folgenden Form erfolgen...

{
"prename": "hanzichi",
"presex": "male",
"preage": "10"
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!