Anstatt von einer JSON-Zeichenfolge zu gehen und $ .parseJSON zu verwenden, muss ich mein Objekt nehmen und es in einer Variablen als Zeichenfolge speichern, die JSON darstellt.
(Eine Bibliothek, mit der ich es zu tun habe, erwartet einen fehlerhaften JSON-Typ, daher muss ich damit herumspielen, damit er funktioniert.)
Was ist der beste Weg, dies zu tun?
javascript
jquery
json
Inkognito
quelle
quelle
Antworten:
Bearbeiten: Sie sollten die Bibliothek json2.js von Douglas Crockford verwenden, anstatt den folgenden Code zu implementieren. Es bietet einige zusätzliche Funktionen und eine bessere / ältere Browserunterstützung.
Holen Sie sich die Datei json2.js unter: https://github.com/douglascrockford/JSON-js
// implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } }; var tmp = {one: 1, two: "2"}; JSON.stringify(tmp); // '{"one":1,"two":"2"}'
Code von: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/
quelle
undefined
, die Funktionen (die keine gültigen JSON-Werte sind), Boolesche Objekte (z. B.new Boolean(true);
) oderNaN
die ersetzt werden sollten mitnull
, etc ... unterstützt es auch nicht die zusätzlichen optionalen Argumente, diereplacer
Funktion und diespaces
Nummer für den Einzug, die im Standard vollständig beschrieben sind .JSON.stringify({})
Sie also einfach zu sehen, ob Sie"{}"
den obigen Code nicht einfügen müssen. Sie können sogar Parameter übergeben, um Schlüssel herauszufiltern oder hübsch zu drucken, z. B.JSON.stringify({a:1,b:2}, null, 2)
setzen Sie eine neue Zeile und 2 Leerzeichen vor jede Taste.ich benutze
Das bringt mir die Schnur.
quelle
Die meisten Browser haben eine native
JSON
Objekt in diesen Tagen, die beinhaltetparse
undstringify
Methoden. Also versuchenJSON.stringify({})
Sie einfach zu sehen, ob Sie bekommen"{}"
. Sie können sogar Parameter übergeben, um Schlüssel herauszufiltern oder hübsch zu drucken, z. B.JSON.stringify({a:1,b:2}, null, 2)
setzen Sie eine neue Zeile und 2 Leerzeichen vor jede Taste.JSON.stringify({a:1,b:2}, null, 2)
gibt
"{\n \"a\": 1,\n \"b\": 2\n}"
welches druckt als
{ "a": 1, "b": 2 }
Verwenden Sie den zweiten Parameter, um einen Teil Ihrer Frage durcheinander zu bringen. Von http://www.javascriptkit.com/jsref/json.shtml :
quelle
Der beste Weg, den ich gefunden habe, ist die Verwendung von jQuery JSON
quelle
Sie können den JSON in ein Objekt analysieren und dann Ihren fehlerhaften JSON aus dem Ajavscript-Objekt erstellen. Dies ist möglicherweise nicht die beste Leistung.
Wenn Sie ansonsten nur sehr kleine Änderungen an der Zeichenfolge vornehmen müssen, behandeln Sie sie einfach als Zeichenfolge und entstellen Sie sie mit Standard-Javascript.
quelle