Deshalb möchte ich dieses JSON-Objekt erstellen:erstellen JSON aus string, als Objekt verwenden
{
"id":"3",
"created":"0000-00-00",
"parentIDs":null,
"childIDs":"",
"uid":"movies",
"title":"Movies",
"related":"movies",
"pos":"",
"css":"{ "background-image":"-webkit-linear-gradient(bottom, rgb(46,44,46) 49%, rgb(18,17,18) 75%)" }"
}
von string:
value = ""id":"3","created":"0000-00-00","parentIDs":null,"childIDs":"","uid":"imdb","title":"Imdb","related":"movies","pos":"""
Diese Zeichenfolge aus einer Datenbank kommt, so kann ich nicht wirklich die Formatierung ändern, aber es sollte so sein.
(Dieser String stammt aus einer Reihe von ähnlichen Saiten, die ich durch iterieren, irgendwie die {} um sie zu verlieren)
Ich habe versucht, die äußeren Anführungszeichen mit value.substr(1, value.length - 2);
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 {}
um es hinzufügen, und dann würde JavaScript es als JSON-Objekt sehen.
Gibt es eine Kurzform, das zu tun? Oder gibt es eine kleine Bibliothek, die meine chaotische Zeichenfolge geschickt in ein JSON-Objekt umwandeln kann?
[update]
ich versucht: eval('{' + value + '}');
aber ich bekomme Uncaught SyntaxError: Unexpected token :
in Chrome.
Ich versuchte JSON.parse, aber erhalten: TypeError: JSON.parse is not a function
in Chrome und Firefox, muss es die Formatierung der Zeichenfolge sein. Ich fange an, den "css" -Eintrag zu verdächtigen, obwohl er anfängt, sich bei dem ersten "id" -Eintrag zu beschweren, erwartet er eine Funktion anstelle von JSON?
(schneide ich den rohen JSON nach unten, aber vergessen, die wichtigsten "css" one)
[update2]
Ok, also habe ich die CSS-Daten zu '
statt "
, jetzt wird es tatsächlich parse, aber jetzt ist mein Skript kaputt, weil ich Roh-CSS von der db erwarte, eine Möglichkeit, die resultierende 'css':'blabla'
zu ändern: "css":"blabla"
?
Es gibt kein JSON-Objekt. Es gibt JSON-Strings und JavaScript-Objekte; welche der beiden willst du bekommen? Sind Sie sicher, dass es keinen besseren Weg gibt? "I iterate through" sagt mir, dass es Ihr Code ist, der das erzeugt, also sollten andere Optionen verfügbar sein. – Jon
* "Ich muss nur {} hinzufügen, und dann würde Javascript es als JSON-Objekt sehen." * Nein. Wenn Sie am Anfang und am Ende '' '' '' 'hinzufügen, haben Sie möglicherweise eine Zeichenfolge enthält gültiges JSON (kein Objekt). Aber das willst du, oder? Wenn Sie stattdessen ein JavaScript-Objekt verwenden möchten, müssen Sie die neue Zeichenfolge an 'JSON.parse' übergeben. Ich denke, Sie sollten sich http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ ansehen, um eine bessere Vorstellung von den Unterschieden zwischen JSON- und JavaScript-Objekten zu bekommen . –
Grundsätzlich möchte ich ein benutzbares Objekt haben, auf das ich zB über value.id zugreifen kann, was ich nicht machen kann, wenn es eine Zeichenkette ist. – TrySpace