Adobe AIR:Umgang mit JSON-Objekten vom Server
-
09-06-2019 - |
Frage
Ich habe ein Skript, das über einen Ajax-Aufruf Objekte von einem Remote-Server abruft.Der Server gibt Objekte in JSON-Notation zurück.
Allerdings gibt es in Adobe AIR eine Nutzungsbeschränkung eval() aus Sicherheitsgründen.Ich kann also Antworten vom Remote-Server erhalten, sie aber nicht wieder in JavaScript-Objekte umwandeln.Gibt es eine Problemumgehung für dieses Problem?Ich möchte JSON für meine JavaScript-Objekte verwenden, da es fast sofort verwendet werden kann.
Randnotiz :Ich verstehe zwar die Auswirkungen auf die Sicherheit, wenn das Problem erzwungen wird, aber ich werde eine schnelle Anwendungsentwicklung für einen Wettbewerb durchführen, sodass das Programm nur ein schneller Prototyp wäre und nicht für Produktionszwecke verwendet würde.Dennoch wäre es großartig, wenn es eine bessere Alternative zu dem gäbe, was ich jetzt versuche
Aktualisieren:
Dank an Das Ö Und jsight für ihre Antworten;
Eine wichtige Sache, die ich heute gelernt habe, ist, dass ich ActionScript-Bibliotheken tatsächlich nutzen kann, indem ich die verwende
<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>Tag erweitert durch Adobe AIR.Kasse Theos Link für weitere Details!
Lösung
Sie können eine finden JSON-Parser hier in JavaScript geschrieben (Quellcode hier).Sie können auch den JSON-Parser as3corelib von JavaScript aus verwenden Eine Beschreibung, wie Sie über JavaScript auf ActionScript-Bibliotheken zugreifen können, finden Sie hier.
Andere Tipps
Die aktuelle AIR-Version (v2.5) bündelt ein neueres WebKit mit nativer JSON-Unterstützung über JSON.stringify() und JSON.parse().
Hast Du Dir angesehen as3corelib?Es scheint einen AS3-Parser für JSON-Daten bereitzustellen, und ich hoffe, dass es nicht auf eval angewiesen ist (wie Sie bemerkt haben, ist eval tendenziell schlecht für die Sicherheit).Es gibt ähnliche Bibliotheken auch für Javascript, und sie sind aufgrund der Sicherheitsauswirkungen des Aufrufs von eval für (potenziell) bösartige Daten tendenziell die bevorzugte Methode zum Parsen von JSON.
JSON ist Javascript Object Notation. Wenn Sie also Javascript verwenden, sind Sie hier genau richtig!Schauen Sie sich diese Links an. Sie enthalten Beispiele für die Erstellung von Javascript-Objekten aus JSON:
http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)
http://betterexplained.com/articles/using-json-to-exchange-data/
Wenn Sie sich für die Flex/AS3-Route entscheiden, ist as3corelib, wie jsight sagte, ein guter Ausgangspunkt.
Ich denke, dass dies möglich ist, wenn Sie eine Iframe- und Sandbox-Brücke verwenden.Sie sollten in der Lage sein, eval() für heruntergeladenen Code im Sandbox-Iframe auszuführen.
Ausschnitt aus Adobe AIR 1.1-Dokumente„...es kann bequemer sein, Inhalte in einem untergeordneten Sandbox-Frame auszuführen, damit die Inhalte ohne Einschränkungen für eval() ausgeführt werden können...“
Ein weiterer verwandter Artikel: Auf AIR aufbauen:Arbeiten mit den Sandbox Bridges