Flashhilfe.de - Flash Community

[HOT] Datenaustausch via JSON [Flash 8]

 


AntwortenRegistrieren Seite1 2  

burnZ#1
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

06.04.2007, 12:20

Hallo liebe Flashgemeinde,

Schuld ist eigentlich Sebastian das ich dazu komme dieses ersmal kleine...hmm ja
Tutorial zu schreiben. Eigentlich sollte etwas größeres entstehen was dann
ein richtig Tutorial für das großes werden sollte, aber eigentlich halte ich es für angebracht ersteinmal etwas anzusprechen was bis hier vieleicht der ein oder andere noch nicht kennt oder nicht weiss wie es funktioniert. Kurz gesagt es geht
um JSON.

JSON steht für JavaScript Object Notation, wobei es eigentlich mitlerweile viel mehr als das betrifft. Arbeiten tut es ähnlich wie PHP's serialize & unserialize, jedoch schneller, logischer und vorallem Platformunabhängig (wie wir gleich feststellen). Also können wir
mit JSON ein Array z.B. an PHP senden welches dann auch dort wieder ankommt. Kein zusammen gefummel, kein XML (wobei XML natürlich nach wie vor eine sinnvolle Sache darstellt jenachdem worum es geht).
So zunächst soll gesagt sein das JSON in PHP erst ab Version 5.2.x standartmäßig implementiert ist, also müssen alle anderen PHP upgraden oder sich das PECL Package zulegen: http://pecl.php.net/package/json

Für die PECL Variante: Der einfachste Weg sich überhaupt PECL Packages zu installieren ist das entsprechende PECL Tool. Unter Linux und einer entsprechenden Version sollten die Befehle "pecl" und "pear" global via Console verfügbar sein.
In einer XAMPP\WinXP Installation empfehle ich folgendes:

- Rechtsklick auf den Arbeitsplatz -> Eigenschaften klicken.
- Auf Tab "Erweitert" klicken und unten auf den Button "Umgebungsvariablen".
- Im unteren Feld die Variable "Path" suchen und doppelklicken
- An das Ende hängen wir erst ein Semikolon zum trennen und daran den Pfad zu unserer XAMPP PHP Installation. Also z.B:
PHP:
1
2
3
4
<?
;C:/xampp/php/
?>


So, nun alles mit OK\Übernehmen wieder schliessen und über Start Menu -> Ausführen eine Console öffnen (cmd). Wenn wir nun einfach nur "pecl" als Befehl eingeben sehen wir das wir durch das erweitern von "Path" unter WinXP diese Befehle auch global sind (sehr praktisch). Um nun unser Package zu installieren reicht folgendes (sofern keine Fehler auftreten):
PHP:
1
2
3
4
<?
pecl install json
?>


OK PHP kann nun JSON. Das beinhaltet 2 PHP Funktionen. json_encode & json_decode. Encode benutzen wir logischerweise um aus einer Variable (keine Resourcen wie z.B filepointer) einen JSON String zu formen, der dann von vielen anderen Sprachen gelesen und rekonstruiert werden kann. Decode hingegen verwenden wir in PHP um einen JSON String zurück zu wandeln. Eine Übersicht wie Links zu allen Packeten von JSON und mehr\detailierte Informationen gibts natürlich auf der offiziellen Seite: http://www.json.org/

Da müssen wir jetzt eh hin um uns schonmal die AS2 Version zu holen. Scrollt also weit runter, befriedigt euch am Ausmaß der JSON Epidemie (*g*) und klickt auch gleich mal auf ActionScript2. Der Source Code der Klasse wird im Browser angezeigt.
Lest den Header durch, bedankt euch beim Autoren und speichert diesen Inhalt dann als JSON.as ab. Wo ist eure Sache, ihr könnt es sicher öfter gebrauchen.

So jetzt haben wir alles was wir brauchen. Ausser natürlich ein Beispiel! Dazu inszenieren wir mal folgendes Szenario (jaja :P):
Wir haben ein PHP Skript das eine Bilder-Liste aus dem Ordner "bilder" an Flash geben soll. Legt dazu mal nen Testordner in eurem htdocs Ordner an und erstellt darin dann den Ordner "bilder" sowie eine PHP Datei namens list.php mit folgendem Inhalt:
PHP:
1
2
3
4
<?
echo "&list=" json_encode(glob('bilder/*.jpg')) . "&";
?>


Simpler gehts wohl kaum. Glob mit ein Array mit allen Dateien im Ordner "bilder" wieder dessen Endung "jpg" ist. Natürlich solltet ihr dafür ein paar JPG's in den Ordner legen :) das daraus resultierende Array speisen wir in json_encode um unsern schönen String anschliessen an flash als "list" Variable geben zu können. Sollte
die Meldung bei PHP kommen die Funktion json_encode sei nicht definiert stimmt
mit eurer PHP Version\PECL Installation noch etwas nicht.


So ein bisschen AS. Ich benutze hier jetzt den FlashIDE, MTASC User oder andere werden schon wissen wie sie den Code für sich verwenden :)

Zuerst krallen wir uns die gespeicherte JSON.as und packen sie zusammen mit einer
frische list.fla in den Ordner von list.php In meiner FLA erstelle ich eine ComboBox Komponente mit dem Instanznamen "list" Und erzeuge auf Frame 1 von _root folgendes LoadVars:
ActionScript:
1
2
3
4
5
var lv:LoadVars = new LoadVars();
lv.onLoad = function(success:Boolean){
   list.dataProvider = new JSON().parse(this.list);
}
lv.load('list.php');


Jaja ich weiss, so wenig PHP, so wenig AS...was soll das denn geben? Sehen wir jetzt!
Mit einem klick auf Datei -> Publizieren erzeugen wir die HTML die wir nun über localhost bzw die URL aufrufen. Wenn ihr alles richtig gemacht habt seht ihr ne ComboBox die eine Datei-Liste enthält. Wieso? Na weil new JSON.parse(this.list); aus dem übergebenen JSON String wieder ein Array bastelt und dieses können wir gleich als dataProvider angeben.

Tja so einfach lassen sich Komplexe Daten hin und her schicken was natürlich zu neuen Ideen anregt. Deswegen quatschen wir in nächster Zeit erst mal über einen simplen ChatServer der JSON benutzt, und vieleicht auch noch über eine kleine Anregung in Sachen "Spiele-Protokoll" für ein Multiplayer Ping-Pong Spiel.

Im Anhang sind nochmal die Dateien in der richtigen Struktur die wir hier zum vorführen
benutzt haben. (Für JPG's im Bilder Ordner müsst ihr allerdings selbst sorgen *g*)

Viel Spass damit!

----------------------------------------------------------------------
Dies ist die Signatur von burnZ. Alle Rechte vorbehalten!

Angehängte Dateien:
Komprimierte Datei json.zip149.65 KB
Geändert von burnZ am 06.04.07 um 12:24 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016


kokune#2
Benutzerbild von kokune
Beiträge: 36
Registriert: Mar 2007

12.04.2007, 11:55

Ist die JSON Source auch für Windoof? Ich seh nur C-Files. Keine CMD, BAT oder EXE-Files mit denen man etwas anfangen könnte...

Dazu haben die C-Files sogar fehler.....peinlich...

kokune
kokune
Geändert von kokune am 12.04.07 um 12:01 Uhr
burnZ#3
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

Themenautor/in

12.04.2007, 12:04

Auf welche Source hast es denn abgesehen? C++ oder so? Bis dahin ist meine alles verschlingende Wissensgier leider noch nicht gekommen :)

----------------------------------------------------------------------
Dies ist die Signatur von burnZ. Alle Rechte vorbehalten!
BackToDos#4
Benutzerbild von BackToDos
Beiträge: 571
Wohnort: LE
Registriert: Apr 2006

12.04.2007, 12:05

das ist ne PHP-Extension ...
wie soll das ne EXE sein? Musst es z.B. als DLL compilieren und in die php.ini einfügen ... zumindest bei WAMP ... :)

greetz
back2dos

greetz
back2dos
Werbung
Beiträge: 0
Registriert: Feb 2016


burnZ#5
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

Themenautor/in

12.04.2007, 12:08

Achsooooooo....ja oder halt wie oben ausführlich beschrieben über das PECL Tool.

----------------------------------------------------------------------
Dies ist die Signatur von burnZ. Alle Rechte vorbehalten!
kokune#6
Benutzerbild von kokune
Beiträge: 36
Registriert: Mar 2007

12.04.2007, 12:23

Sorry, aber wie soll man dis in ne DLL packen wenn da fehler drin sind?!

Da fehlt eindeutig die "php.h"!

kokune
kokune
Geändert von kokune am 12.04.07 um 12:29 Uhr
burnZ#7
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

Themenautor/in

12.04.2007, 12:46

naja zu jeder extension die ganzen cores packen?! ne oder?! les doch mal nach wie man php extensions kompiliert :)

----------------------------------------------------------------------
Dies ist die Signatur von burnZ. Alle Rechte vorbehalten!
kokune#8
Benutzerbild von kokune
Beiträge: 36
Registriert: Mar 2007

12.04.2007, 15:15

http://pecl4win.php.net/ext.php/php_json.dll

geht auch..

kokune
kokune
burnZ#9
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

Themenautor/in

12.04.2007, 16:11

richtig so ist es :)

----------------------------------------------------------------------
Dies ist die Signatur von burnZ. Alle Rechte vorbehalten!
kokune#10
Benutzerbild von kokune
Beiträge: 36
Registriert: Mar 2007

12.04.2007, 16:56

Nur kann man die nicht wirklich einbinden... Aber dieses Problem gehört ja nich in dieses Thema.

kokune
kokune
frengel#11
Benutzerbild von frengel
Beiträge: 51
Registriert: Jun 2005

12.04.2007, 18:04

Ich hatte mich schon auf ein Tutorial von burnZ gefreut,
dass nicht nur für Experten gedacht ist.
Liebe Grüße

manfred.weber#12
Benutzerbild von manfred.weber
Beiträge: 3
Registriert: Feb 2007

17.04.2007, 20:19

Falls es mit der Pecl Extension zuviele Probleme gibt, denn da sind noch bekannte Bugs drin, kann man auch auf eine PHP Variante umsteigen. Eine einfache Objekt Umwandlung kann man immerhin auch mit wenigen Zeilen selbst machen, denn das JSON Format ist relativ simpel.
Auf json.org [ http://json.org/ ] gibt es praktisch für jede Programmiersprache Links zur jeweiligen  Implementierung.

23 OR 1=1
burnZ#13
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

Themenautor/in

19.04.2007, 13:10

Richtig, wie bereits in meinem "Artikel" ausführlich beschrieben. Danke für das hervorheben dieser Information!

Scrollt also weit runter, befriedigt euch am Ausmaß der JSON Epidemie (*g*) und klickt auch gleich mal auf ActionScript2

----------------------------------------------------------------------
Dies ist die Signatur von burnZ. Alle Rechte vorbehalten!
qlistenerp#14
Benutzerbild von qlistenerp
Beiträge: 70
Wohnort: Ba.-Wü.
Registriert: Oct 2006

04.12.2007, 19:04

Also, zwar habe ich es noch nicht ausprobiert, aber alleine die Möglichkeit zu haben, es mal ausprobieren zu können, ist mir ein Dankeschön wert.

Danke ;).

rockstarberlin#15
Benutzerbild von rockstarberlin
Beiträge: 14
Wohnort: berlin
Registriert: Mar 2008

06.03.2008, 02:12

hallo leute,

hab mal den JSON unserializer ausprobiert. der funktioniert wie es mir scheint nur mit normalen arrays aber nicht mit assoziativen.

ich hab mit testdaten das ganze ausprobiert. funktioniert bei mir nicht. wenn ich die elementbezeichner einfach lösche und ein normales array anlege, dann funktioniert es.

was mir auch nicht klar ist, wie die daten in eine variable gelagen sollen. in meinen testdaten (die ich von jemand anderem geliefert bekomme) fangen die daten direkt mit { an. ohne eine vorangestellte variable à la &flashVar=

kann das denn so stimmen?

hat jemand die muße mir hier ein beispiel-file eines funktionierenden JSON-formatierten assoziativ-arrays zu posten?

danke

rockstar

rockstarberlin#16
Benutzerbild von rockstarberlin
Beiträge: 14
Wohnort: berlin
Registriert: Mar 2008

06.03.2008, 05:13

so. ich hab jetzt mein problem gelöst.

die JSON.as von json.org funktioniert bei mir nicht. keine ahnung warum,  ist mir jetzt aber auch egal.

ich bin über einen blog (http://sagarkulkarni.com/2007/03/18/flash-and-json/) auf die JSONConnector komponente gestoßen. achtung, die beispiele da funktionieren nicht richtig!

aber die komponente ist genial. habs schon eingebaut und es funktioniert perfekt :-)

hier die links zur komponente

http://flash-toys.110mb.com/json/index.php

http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1078469

gruß

rockstar


AntwortenRegistrieren Seite1 2  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de