Kann ich RegExp und Funktion in JSON speichern?
Gegeben einem block wie diesem:
var foo = {"regexp":/^http:\/\//,
"fun":function(){},
}
Was ist ein richtiger Weg, um es zu speichern im JSON?
InformationsquelleAutor der Frage Huang | 2011-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichert man den RegExp als string im JSON-Objekt. Sie können dann konstruieren Sie ein RegExp-Objekt aus dem string:
Als für Funktionen: Sie sollen nicht dargestellt werden im JSON-oder XML-sowieso. Eine Funktion kann definiert werden als ein Objekt in JS, aber sein Hauptzweck ist es noch zu fassen eine Sequenz von Befehlen, nicht dienen als wrapper für die grundlegenden Daten.
InformationsquelleAutor der Antwort Ankit Aggarwal
Können Sie nicht. JSON ist für nur Daten, kein code. Es gibt keine Möglichkeit zu transfer-Funktionen.
InformationsquelleAutor der Antwort Evert
Konnten Sie so etwas tun...
Methode
Nutzung
N. B.
Fast eine gute Lösung, aber funktioniert nicht mit regex (für mich jedenfalls)
http://jsonplus.com/
InformationsquelleAutor der Antwort Billy Moon
Im Kern JSON, gibt es nicht; die JSON-Spezifikation erlaubt nur für primitive Werte (string/Zahl/boolean/null), und arrays und Objekte.
InformationsquelleAutor der Antwort Jason S
Für diejenigen, die noch auf der Suche nach einer Antwort:
mit plagin JSONfn können Sie serialisieren, javascript-Objekt mit
und neu erstellen Objekt aus dieser string.
Dokumentation: http://www.eslinstructor.net/jsonfn/
--Vadim
InformationsquelleAutor der Antwort vadimk
Ist es nicht, JSON, aber es ist eine form der Serialisierung:
foo.toSource()
gibt eine string-Darstellung:"({regexp:/^http:\\/\\//, fun:(function () {})})"
. Mitbar = eval(foo.toSource());
ordnet ein neues Objekt mit einer regex und eine Funktion, diebar
.Ich weiß nicht, wie gut es unterstützt wird. Mehrere website erwähnen, dass es gecko-nur, obwohl Sie zwei Jahre alt. Ich habe derzeit nur Zugriff auf Firefox, so dass Sie zu testen, ob es funktioniert in den Browsern, die Sie unterstützen wollen (wahrscheinlich IE, Chrome, Safari und Opera).
InformationsquelleAutor der Antwort Daan Wilmer
Ich verwendet habe und empfehlen würde serialisieren-javascript npm-Paket von yahoo. Es kann serialisieren JSON mit den Funktionen und den regex-spezifisch und behandelt andere Fälle.
Von Ihren docs:
produziert
werden können, hydratisiert mit
Dies kann überprüft werden, indem Sie sich Ihre unit-tests.
InformationsquelleAutor der Antwort cchamberlain
Alle oben genannten Antworten ist richtig, anstelle von speichern können Sie diesen Teil des Codes als string und dann tun
eval()
InformationsquelleAutor der Antwort balkon_smoke