1233 Stimmen

Serialisierung zu JSON in jQuery

Ich muss serialisieren ein Objekt zu JSON . Ich benutze jQuery . Gibt es eine "Standard"-Methode, um dies zu tun?

Meine besondere Situation: Ich habe ein Array definiert, wie unten gezeigt:

var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';
...

und ich muss dies in eine Zeichenkette umwandeln, die ich an $.ajax() wie diese:

$.ajax({
    type: "POST",
    url: "Concessions.aspx/GetConcessions",
    data: "{'countries':['ga','cd']}",
...

1158voto

JSON-js - JSON in JavaScript.

Um ein Objekt in eine Zeichenkette zu konvertieren, verwenden Sie JSON.stringify :

var json_text = JSON.stringify(your_object, null, 2);

Um einen JSON-String in ein Objekt zu konvertieren, verwenden Sie JSON.parse :

var your_object = JSON.parse(json_text);

Sie wurde kürzlich empfohlen von John Resig :

...BITTE fangen Sie an zu migrieren Ihre JSON-verwendenden Anwendungen auf Crockfords json2.js. Es ist vollständig kompatibel mit der ECMAScript 5 Spezifikation und wird ordnungsgemäß degradiert wenn eine native (schnellere!) Implementierung existiert.

Tatsächlich habe ich gerade gestern eine Änderung in jQuery vorgenommen, die die JSON.parse-Methode verwendet, falls sie existiert, jetzt vollständig spezifiziert wurde.

Ich neige dazu, dem zu vertrauen, was er in Sachen JavaScript sagt :)

Alle modernen Browser (und viele ältere, die noch nicht alt sind) unterstützen die JSON-Objekt nativ. Die aktuelle Version von Crockfords JSON-Bibliothek definiert nur JSON.stringify y JSON.parse wenn sie nicht bereits definiert sind, so dass eine browsereigene Implementierung intakt bleibt.

184voto

Jay Taylor Punkte 12391

Ich habe mit jquery-json seit 6 Monaten und es funktioniert hervorragend. Es ist sehr einfach zu bedienen:

var myObj = {foo: "bar", "baz": "wockaflockafliz"};
$.toJSON(myObj);

// Result: {"foo":"bar","baz":"wockaflockafliz"}

101voto

pestatije Punkte 1051

Funktioniert mit IE8+

Keine Notwendigkeit für jQuery, verwenden:

JSON.stringify(countries);

47voto

Tahir Akhtar Punkte 11147

Ich habe es nicht benutzt, aber Sie sollten vielleicht die jQuery-Plugin geschrieben von Mark Gibson

Sie fügt die beiden Funktionen hinzu: $.toJSON(value) , $.parseJSON(json_str, [safe]) .

37voto

Adam Bellaire Punkte 103525

Nein, die Standardmethode zur Serialisierung nach JSON ist die Verwendung einer vorhandenen JSON-Serialisierungsbibliothek. Wenn Sie dies nicht tun möchten, müssen Sie Ihre eigenen Serialisierungsmethoden schreiben.

Wenn Sie wissen wollen, wie das geht, empfehle ich Ihnen, die Quellen einiger der verfügbaren Bibliotheken zu untersuchen.

EDITAR: Ich will nicht behaupten, dass es schlecht ist, eigene Serliazierungsmethoden zu schreiben, aber wenn es für Ihre Anwendung wichtig ist, wohlgeformtes JSON zu verwenden, dann müssen Sie den Overhead einer weiteren Abhängigkeit" gegen die Möglichkeit abwägen, dass Ihre benutzerdefinierten Methoden eines Tages auf einen Fehlerfall stoßen, den Sie nicht vorhergesehen haben. Ob dieses Risiko akzeptabel ist, müssen Sie entscheiden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X