Erstellen Sie JSON aus einer Zeichenfolge, die als Objekt verwendet werden soll

8

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" ?

    
TrySpace 14.08.2013, 12:41
quelle

9 Antworten

14

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.

    
knolleary 14.08.2013 12:51
quelle
6

ok, das ist also das Beste, was ich mir vorstellen kann:

%Vor%

Ссылка

    
Neil S 19.08.2013 23:34
quelle
4

Es ist inbuild -Option in jquery , um die Zeichenfolge in Json zu analysieren.

als

%Vor%

entfernt " von CSS-Teil
Hier wird ausgegeben Siehe unten Ссылка

    
Bhaarat 23.08.2013 06:42
quelle
3

Hier ist ein Parser, der regx verwendet!

%Vor%

ist es ziemlich einfach, nicht wahr?

    
AhmadF 22.08.2013 10:51
quelle
2

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

    
Joe Buckle 18.08.2013 13:34
quelle
2

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:

%Vor%

Hier ist ein funktionelles Beispiel: Ссылка

Tools wie diese JsonViewer helfen immer!

    
Vojtiik 24.08.2013 19:14
quelle
0

Was Sie suchen, ist JSON.parse :

%Vor%

Es könnte allerdings sauberer aussehen.

    
federicot 14.08.2013 12:56
quelle
0

Wie wäre es damit?

%Vor%

Dies ist sicherer und schneller gleichwertig für eval und JSON.parse für Ihre Anforderung.

    
Exception 23.08.2013 12:21
quelle
0

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.

    
VitaliyG 24.08.2013 19:45
quelle

Tags und Links