Ich möchte also dieses JSON-Objekt erstellen:
%Vor%aus Zeichenfolge:
%Vor%Diese Zeichenfolge stammt aus einer Datenbank, daher kann ich die Formatierung nicht wirklich ändern, aber sie sollte so aussehen.
(Diese Zeichenfolge stammt aus einem Array ähnlicher Strings, durch die ich iteriere, wodurch {} um sie herum verloren geht)
Ich habe versucht, die äußeren Anführungszeichen mit value.substr(1, value.length - 2);
zu entfernen. Und dann wandle es mit .toJSON();
um, aber es fügt nur eine ganze Menge zusätzlicher Schrägstriche hinzu, die ich nicht brauche.
Ich muss nur {}
hinzufügen, und dann würde JavaScript es als JSON-Objekt sehen.
Gibt es irgendeine Abkürzung dafür? Oder gibt es eine kleine Bibliothek, die meine unordentliche Zeichenfolge geschickt in ein JSON-Objekt konvertieren kann?
%Vor% Ich habe versucht: eval('{' + value + '}');
Aber ich bekomme Uncaught SyntaxError: Unexpected token :
in Chrome.
Ich habe JSON.parse ausprobiert, aber in Chrome und Firefox: TypeError: JSON.parse is not a function
, es muss die Formatierung der Zeichenfolge sein. Ich fange an, den "css" -Eintrag zu verdächtigen, obwohl er anfängt, sich beim ersten "id" -Eintrag zu beschweren, erwartet er eine Funktion anstelle von JSON?
(Ich habe das rohe JSON reduziert, aber das wichtigste "css" vergessen)
[update2]
Ok, also habe ich die CSS-Daten in '
anstelle von "
geändert, jetzt wird es tatsächlich parsen, aber jetzt ist mein Skript kaputt, weil ich rohes CSS von der db erwarte, jede Möglichkeit, das zu ändern resulting 'css':'blabla'
bis: "css":"blabla"
?
Wenn Sie eine Zeichenfolge mit gültigem JSON haben, können Sie sie mit JSON.parse()
in ein JavaScript-Objekt konvertieren.
Angenommen, Sie haben eine Zeichenfolge:
%Vor%würdest du dann tun:
%Vor% Beachten Sie, dass die {}
als Teil der Zeichenfolge eine gültige JSON-Zeichenfolge sein muss.
Hier ist ein bisschen eine Umgehung, wenn Sie sagen, dass der Grund, warum Ihre Zeichenfolge nicht analysiert, ist, weil die nächste Dimension Ihres JSON-Arrays in Anführungszeichen eingeschlossen ist. Ich bin mir sicher, dass es einen besseren Weg gibt.
%Vor%Und hier ist meine Geige
Wie schon jeder erwähnt hat jQuery.parseJSON()
ist der Weg. In Ihrem Fall müssen Sie zuerst die Zeichenfolge bereinigen, die Sie von SQL erhalten haben, andernfalls können Sie nicht in das richtige json-Format einlesen:
Hier ist ein funktionelles Beispiel: Ссылка
Tools wie diese JsonViewer helfen immer!
Was Sie suchen, ist JSON.parse
:
Es könnte allerdings sauberer aussehen.
Ich verstehe, dass Sie diese Zeichenfolge nicht mit AJAX erhalten, sondern sie direkt in ein Skript auf der Serverseite einbetten - es muss also nicht auf dem Client analysiert werden (JSON.parse wird hier nicht benötigt). Alles, was Sie brauchen, ist, Objektdaten korrekt nach JSON-Regeln zu schreiben:
%Vor%Achten Sie auf die css-Eigenschaft (wenn Sie Anführungszeichen in eine Zeichenfolge einfügen möchten, können Sie einfach verschiedene Anführungszeichen für den Beginn und das Ende der Zeichenfolge verwenden). Es gibt keinen anderen Weg - Sie müssen nur Ihre String-Konstanten richtig zitieren.