Introduction
Nous allons voir à travers cet article comment une application RIA va pouvoir charger et afficher des données au format JSON.
Présentation du format JSON
Extrait du site http://www.json.org/jsonfr.html :
JSON (JavaScript Object Notation – Notation Objet issue de JavaScript) est un format léger d’échange de données. Il est facile à lire ou à écrire pour des humains. Il est aisément analysable ou générable par des machines. Il est basé sur un sous-ensemble du langage de programmation JavaScript (JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999). JSON est un format texte complètement indépendant de tout langage, mais les conventions qu’il utilise seront familières à tout programmeur habitué aux langages descendant du C, comme par exemple : C lui-même, C++, C#, Java, JavaScript, Perl, Python et bien d’autres. Ces propriétés font de JSON un langage d’échange de données idéal.
Les données au format JSON
Pour notre exemple, nous allons charger les tweets français sur Flex.
Ces données se présenteront sous cette forme :
Flex et le format JSON
Par défaut, le framework Flex ne propose pas de classes permettant de gérer le format JSON. Nous allons donc utiliser une librairie externe : corelib.
Cette librairie a été créé par trois évangélistes Adobe : Mike Chambers, Daniel Dura et Christian Cantrell.
Installer la librairie corelib
- La première étape consiste à récupérer la librairie à l’adresse http://code.google.com/p/as3corelib/downloads/list
- Dézipper le fichier téléchargé
- Copier le fichier as3corelib.swc qui se trouve dans le dossier lib vers le dossier libs de votre projet Flex
Charger les données JSON
Pour effectuer notre requête vers Twitter, nous allons utiliser un objet HTTPService. La requête aura lieu une fois notre application créée.
Cette requête étant asynchrone, nous définirons une fonction de retour pour l’événement ResultEvent.RESULT dans laquelle nous exécuterons le traitement des données.
Le format JSON étant un format texte, nous allons définir la propriété resultFormat de l’objet HTTPService sur la valeur "text ".
Nous utiliserons l’api de recherche de twitter en précisant l’url : http://search.twitter.com/search.json?lang=fr&q=flex
<fx:declarations> <s:httpservice id="httpService" url="http://search.twitter.com/search.json?lang=fr&q=flex" resultFormat="text" result="httpService_resultHandler(event)"/> </fx:declarations>
La requête sera exécutée en utilisant la méthode send() de l’objet HTTPService.
protected function creationCompleteHandler(event:Event):void
{
//Affichage du curseur de chargement
CursorManager.setBusyCursor();
//Envoi de la requête
httpService.send();
}
Traitement des données JSON
Le traitement des données se fera dans la fonction httpService_resultHandler.
Nous allons dans un premier temps récupérer la chaîne représentant les données au format JSON puis nous utiliserons la méthode statique decode() de la classe JSON de la librairie corelib.
Cette méthode retourne un objet contenant des paires nom/valeur.
protected function httpService_resultHandler(event:ResultEvent):void
{
//Objet de données
var object:Object = JSON.decode(String(event.result));
}
Comme nous pouvons le constater dans l’exemple JSON fournit au format zip, l’objet racine de nos données contient une propriété results.
Nous allons transformer cet objet en un tableau grâce à la méthode statique toArray() de la classe ArrayUtil. Ce tableau servira ensuite de fournisseur de données pour l’affichage dans une liste.
protected function httpService_resultHandler(event:ResultEvent):void
{
//Objet de données
var object:Object = JSON.decode(String(event.result));
//Affichage dans la liste
list.dataProvider = new ArrayCollection(ArrayUtil.toArray(object.results));
//Suppression du curseur de chargement
CursorManager.removeBusyCursor();
}
Affichage des données
Les données seront ensuite affichées dans une liste.
Cette liste utilisera un item renderer pour personnaliser l’affichage dans la liste.
Nous afficherons l’image de l’utilisateur ayant réalisé le tweet en utilisant le champ profile_image_url des données JSON. Nous afficherons aussi le pseudo de l’utilisateur, la date de création et le contenu du tweet.
Nous utiliserons les champs from_user, created_at et text.
Cet article est aussi valable pour Flex Builder 3 où il faudra seulement modifier les contrôles d’affichage utilisés.
Code source
Je suis Antony Chauviré, développeur sur la Flash Platform.
y a un problème d’affichage au niveau de :
Affichage des données
Les données seront ensuite affichées dans une liste.
Bonjour
Serait il possible d’avoir le code en entier svp ?
merci
Salut jlau,
Le projet est disponible en téléchargement à la fin de l’article.
;-)
Salut,
Juste pour info, le projet n’est plus sur Google code mais sur github.com
https://github.com/mikechambers/as3corelib