Der beste Weg, um eine Zeichenfolge in ein Array von Objekten in Javascript zu konvertieren?
Möchte ich wandeln unter string in ein array in javascript.
{a:12, b:c, foo:bar}
Wie wandle ich diesen string in ein array von Objekten? Irgendeine Coole Idee?
InformationsquelleAutor der Frage Zeck | 2010-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass der beste Weg, dies zu tun, als Douglas Crockford (einer der biggests gurus von JavaScript) schlägt hier ist mit dem Native JSON-parserwie es ist nicht nur schneller als die eval () -, es ist auch sicherer.
Native JSON-parser ist bereits verfügbar in:
Crockford und hat einen sicheren fallback in javascript, genannt json2.jsdie eine Anpassung der eval () - Ansatz, mit dem einige Sicherheits-bits Hinzugefügt und mit der nativen JSON-Parser-API. Sie brauchen nur zu zählen, dass die Datei, entfernen Sie die erste Zeile, und verwenden Sie die nativen JSON-parser, und wenn es nicht vorhanden json2 würde die Arbeit machen.
Hier ist ein Beispiel:
Einmal analysiert, erhalten Sie ein Objekt mit Attributen
a
undb
und wie Sie vielleicht wissen, können Sie Sie behandeln ein Objekt als hash-Tabelle oder assoziatives array in JavaScript, so dass Sie wäre in der Lage, den Zugriff auf die Werte wie diese:Wenn Sie wollen einfach nur ein einfaches array und kein assoziatives, das man so etwas machen:
Schließlich, wenn auch nicht notwendig in plain JavaScript, die JSON spec benötigt den doppelten Quotierung der Schlüssel der Elemente. Also die navite parser funktioniert nicht ohne Sie. Wenn ich du wäre würde ich es hinzufügen, aber wenn es nicht möglich ist, verwenden Sie die
var myObject = eval( "(" + myString + ")" );
Ansatz.InformationsquelleAutor der Antwort alcuadrado
Die einfachste, aber unsichere Weg, es zu tun ist:
Aber da dies interpretieren von javascript-code, es hat Sicherheitslücken. Zum Schutz gegen diese Nutzung einen json-parser. Wenn Sie ein framework (jquery, mootools, etc.) es ist ein framework-spezifischen rufen. Die meisten von Ihnen basieren auf Douglas Crawford-parser verfügbar bei http://www.json.org/js.html.
InformationsquelleAutor der Antwort Rob
Seit Ihr string ist fehlerhaften JSON, JSON-parser nicht analysiert werden, richtig und auch von eval() einen Fehler auslösen. Es ist auch kein Array sondern eine HashMap oder einfach ein Objekt-literal (fehlerhaften). Wenn die Objekt-literal wird nur die Nummer und string-Werte (und keine untergeordneten Objekte/arrays) Sie können den folgenden code verwenden.
Code wird sich Ihren string in ein Array von Objekten (plural).
Wenn jedoch Sie wollte eigentlich eine HashMap (Assoziatives Array) und KEIN array, verwenden Sie den folgenden code:
Dem obigen code wird sehr viel schwieriger, wenn Sie beginnen Verschachtelung von Objekten und arrays. Im Grunde müsste man umschreiben JSON.js und JSON2.js zu unterstützen malformed JSON.
Beachten Sie auch die folgende option, die ist immer noch schlecht ich zugeben, aber geringfügig besser dann kleben JSON in einem HTML-tag als Attribut.
Ich gehe davon aus, dass Sie weglassen Anführungszeichen in den string, weil Sie hatte es in einem HTML-tag als Attribut und nicht wollen, um zu entkommen Zitate.
InformationsquelleAutor der Antwort BGerrissen
Können Sie "in"
Hinweise: wenn man bedenkt, dass myObject nur eine Ebene von Schlüssel-Wert-Paare.
InformationsquelleAutor der Antwort Topera
Wenn Sie mit jQuery, da gibt es die $.parseJSON() Funktion. Es wirft eine exception, wenn der string ungültig ist, und "Auch wenn Sie im nichts, wird ein leerer string, null oder undefined ist, wird 'null' zurückgegeben von parseJSON. Wo der browser bietet eine native Implementierung von JSON.analysieren, die jQuery nutzt es analysiert die Zeichenfolge"
InformationsquelleAutor der Antwort jamiebarrow
JSON.analysieren wird den trick tun. Einmal analysiert, können Sie schieben Sie Sie in das array.
InformationsquelleAutor der Antwort Sarathi S