Objekt in JSON-Zeichenfolge konvertieren

Antworten:

188

jQuery führt nur einige Regexp-Überprüfungen durch, bevor die native Browsermethode aufgerufen wird window.JSON.parse(). Wenn dies nicht verfügbar ist, wird ein Javascript-Objekt verwendet eval()oder genauer new Function().

Das Gegenteil von JSON.parse()ist, JSON.stringify()dass ein Javascript-Objekt in eine Zeichenfolge serialisiert wird. jQuery hat dafür keine eigene Funktionalität, Sie müssen die im Browser integrierte Version oder json2.jsvon http://www.json.org verwenden

JSON.stringify() ist in allen gängigen Browsern verfügbar, aber um mit älteren Browsern kompatibel zu sein, benötigen Sie diesen Fallback.

jAndy
quelle
4
Dies kann hilfreich sein:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
Roberthuttinger
2
@tekretic: Ich hoffe du trollst. Chrome implementiert das JSONHost-Objekt seit Tag 1.
jAndy
5
@jAndy: Oh wow, sorry. Nicht Trolling, aber OH so falsch. Es stellte sich heraus , dass WebKit Mitte 2009 um native JSON-Unterstützung erweitert wurde , sodass es seit Chrome 3.0 unterstützt wird. Mein vorheriger, völlig ungenauer Kommentar basierte auf der Hälfte dieser veralteten Frage in Kombination mit dem CMS, an dem ich gerade arbeite und das window.JSON tatsächlich durch eine eigene Bibliothek ersetzt, was bedeutet, dass JSON.stringify()es nicht definiert ist. In jeder Hinsicht ein ziemlicher Fehlschlag.
Molomby
1
@jAndy: verwirre mich nicht; : JSON.stringify 'serialisiert' ein Objekt, bitte sagen Sie, dass es nur ein Fehler ist
Halfbit
12

Ebenfalls nützlich ist Object.toSource () für Debugging-Zwecke, bei dem Sie das Objekt und seine Eigenschaften für Debugging-Zwecke anzeigen möchten. Dies ist eine generische Javascript-Funktion (nicht jQuery), die jedoch nur in "modernen" Browsern funktioniert.

Excalibur
quelle
4

Konvertieren Sie ein JavaScript-Objekt in JSON-Daten

$("form").submit(function(event){
  event.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvertedData = JSON.stringify(formData);  // Convert to json
  consol.log(jsonConvertedData);
});

Sie können JSON-Daten mithilfe von http://jsonlint.com überprüfen

Subroto Biswas
quelle
2

Sie können das ausgezeichnete jquery-Json-Plugin verwenden:

http://code.google.com/p/jquery-json/

Erleichtert das Konvertieren in und von Json-Objekten.

George Filippakos
quelle
2
Bitte empfehlen Sie SPL-Methoden gegenüber Add-On-Logikbibliotheken.
David J Eddy
2
SPL = Standard PHP Library. In diesem Fall handelt es sich vermutlich um SJL (Standard-Javascript-Bibliothek).
David J Eddy
3
Die Frage betrifft jQuery & Javascript. Es hat nichts mit PHP, PHP-Bibliotheken oder SPL zu tun.
George Filippakos
3
Standardbibliotheken sind Standardbibliotheken. egal die Sprache. Mein Punkt ist, dass es besser ist, eine Lösung zu empfehlen, die die Sprache über das "Use this Plugin" -Syndrom lehrt.
David J Eddy
1
Genau, warum das Rad neu erfinden ... benutze die Standardfähigkeiten einer Sprache über ein 'Plugin', aber ich schweife ab.
David J Eddy