Parse ill formed JSON String

8

Ich werde von einer dritten Partei eine schlecht geformte JSON-Zeichenfolge gesendet. Ich habe versucht, JSON.parse(str) zu verwenden, um es in ein JavaScript-Objekt zu analysieren, aber es ist natürlich gescheitert.

Der Grund dafür ist, dass die Schlüssel keine Zeichenfolgen sind:

%Vor%

Im Gegensatz zu einer gültigen JSON-Zeichenfolge (die genau analysiert):

%Vor%

Ich muss die schlecht geformte Saite jetzt akzeptieren. Ich stelle mir vor, zu vergessen, Schlüssel richtig zu zitieren ist ein häufiger Fehler. Gibt es eine gute Möglichkeit, dies in eine gültige JSON-Zeichenfolge zu ändern, so dass ich es analysieren kann? Jetzt muss ich vielleicht Zeichen für Zeichen analysieren und versuchen, ein Objekt zu bilden, was schrecklich klingt.

Ideen?

    
lostintranslation 19.04.2013, 17:56
quelle

3 Antworten

5

Sie könnten es einfach überprüfen, aber das wäre eine schlechte Sicherheitsvorkehrung, wenn Sie der Quelle nicht vertrauen. Bessere Lösung wäre, die Zeichenfolge entweder manuell zu ändern, um die Schlüssel zu zitieren, oder ein Werkzeug zu verwenden, das jemand anderes für Sie geschrieben hat (siehe Ссылка <) geschrieben von Daepark.

    
huwiler 19.04.2013, 18:13
quelle
2

Ich habe dies kürzlich getan und Uglifyjs verwendet, um Folgendes auszuwerten:

%Vor%

Das ist wirklich schlampig und hat alle die gleichen Probleme wie eine eval () basierte Lösung, aber wenn Sie die Daten nur einmal parsen / neu formatieren müssen, dann sollte das obige Ihnen eine saubere JSON-Kopie bringen das JS-Objekt.

    
BishopZ 19.04.2013 18:52
quelle
1

Je nachdem, was sonst in JSON ist, können Sie einfach eine Zeichenfolge ersetzen und '{' durch '{"' und ':' durch '":' ersetzen.

    
Paul 19.04.2013 18:01
quelle

Tags und Links