Guide de référence ActionScript® 3.0 pour la plate-forme Adobe® Flash®
Accueil  |  Masquer la liste des packages et des classes |  Packages  |  Classes  |  Nouveautés  |  Index  |  Annexes  |  Pourquoi existe-t-il du contenu en anglais ?
Filtres : Récupération des données du serveur...
Récupération des données du serveur...
Niveau supérieur 

JSON  - AS3

PackageNiveau supérieur
Classepublic final class JSON
HéritageJSON Inheritance Object

Version du langage: ActionScript 3.0
Versions du moteur d’exécution: Flash Player 11, AIR 3.0

La classe JSON permet aux applications d’importer et d’exporter les données à l’aide du format JavaScript Object Notation (JSON). JSON est un format d’échange de données normalisé décrit sur le site http://www.json.org.

En règle générale, la classe JSON ActionScript est conforme à la spécification ECMA-262. Les exceptions suivantes se produisent lorsqu’ActionScript offre plus de souplesse qu’ECMAScript :

  • Contrairement à ECMAScript, la classe JSON ActionScript chiffre les données primitives suivantes, ainsi que les objets qui les intègrent :

    Type primitifClasse d’enveloppe
    chaîneString
    nombreNumber
    valeur booléenneBoolean
  • Méthode parse() : lorsque l’argument transmis au paramètre reviver n’est pas une fonction, ActionScript renvoie une exception TypeError avec l’ID d’erreur kJSONInvalidReviver. Il publie également un message d’erreur localisé.

  • Méthode Stringify() : lorsque l’argument transmis au paramètre replacer n’est ni un tableau ni une fonction, ActionScript renvoie une exception TypeError avec l’ID d’erreur kJSONInvalidReplacer. Il publie également un message d’erreur localisé.

  • Méthode Stringify() : lorsque l’argument transmis au paramètre space n’est ni une chaîne ni nombre, il est converti en chaîne. Cette chaîne sert d’espace dans la sortie. ECMA-262 exige que l’espace soit une chaîne vide.

  • Méthode Stringify() : lorsque le code rencontre une structure cyclique, il renvoie une exception TypeError avec l’ID d’erreur kJSONCyclicStructure. Il publie également un message d’erreur localisé.

  • ECMA-262 spécifie que la conversion en chaîne de JSON énumère les « propriétés intrinsèques » d’un objet, c’est-à-dire ses propriétés dynamiques. Etant donné que les classes ActionScript peuvent également déclarer des propriétés fixes, la méthode stringify() d’ActionScript énumère les propriétés dynamiques et les propriétés publiques non transitoires sur les objets ActionScript. Ces propriétés contiennent des propriétés accessibles par des accesseurs Get, ainsi que des propriétés directement accessibles.

Pour la plupart des classes ActionScript, la méthode JSON.stringify() d’ActionScript génère un encodage par défaut. Les classes ActionScript peuvent changer cet encodage en définissant une méthode toJSON() dans la classe ou son prototype. L’encodage JSON par défaut ne convient pas à certaines classes ActionScript. Ces classes fournissent une implémentation triviale et remplaçable de la méthode toJSON(), qui renvoie la valeur décrite dans le tableau suivant. Vous pouvez remplacer ou redéfinir les méthodes toJSON() sur ces classes si vous souhaitez obtenir un comportement particulier. Le tableau suivant décrit ces exceptions :

ClasseCommentaires
ByteArrayLa méthode toJSON() remplaçable renvoie la chaîne "ByteArray".
DictionnaireLa méthode toJSON() remplaçable renvoie la chaîne "Dictionary".
DateLa méthode toJSON() remplaçable renvoie Date.toString(). Cette exception garantit que le constructeur de date ActionScript peut analyser la chaîne JSON.
XMLLa méthode toJSON() remplaçable renvoie la chaîne "XML".

Consulter les exemples

Plus d’exemples

Informations complémentaires



Propriétés publiques
 PropriétéDéfini par
 Inheritedconstructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet.
Object
Méthodes publiques
 MéthodeDéfini par
 Inherited
Indique si la propriété spécifiée d’un objet est définie.
Object
 Inherited
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre.
Object
  
parse(text:String, reviver:Function = null):Object
[statique] Prend en charge une chaîne au format JSON et renvoie un objet ActionScript qui représente cette valeur.
JSON
 Inherited
Indique si la propriété spécifiée existe et est énumérable.
Object
 Inherited
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle.
Object
  
stringify(value:Object, replacer:* = null, space:* = null):String
[statique] Renvoie une chaîne, au format JSON, qui représente une valeur ActionScript.
JSON
 Inherited
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur.
Object
 Inherited
Renvoie la représentation sous forme de chaîne de l’objet spécifié.
Object
 Inherited
Renvoie la valeur primitive de l’objet spécifié.
Object
Détails de la méthode

parse

()méthode
public static function parse(text:String, reviver:Function = null):Object

Version du langage: ActionScript 3.0
Versions du moteur d’exécution: Flash Player 11, AIR 3.0

Prend en charge une chaîne au format JSON et renvoie un objet ActionScript qui représente cette valeur. Les objets, tableaux, chaînes, nombres, valeurs booléennes et valeurs null JSON correspondent aux valeurs ActionScript suivantes, comme indiqué ci-dessous :

Type JSONType ActionScript
tableauArray
chaîneString
nombreNumber
valeur booléenneBoolean
nullnull

Le paramètre reviver est une fonction qui prend deux paramètres : une clé et une valeur. Vous pouvez utiliser cette fonction pour transformer ou filtrer chaque paire clé/valeur telle qu’elle est analysée. Si vous fournissez une fonction reviver, c’est votre valeur transformée ou filtrée pour chaque paire qui est renvoyée dans la fonction de sortie parse(), et non la valeur d’analyse par défaut. Si la fonction reviver renvoie undefined pour une paire, la propriété est supprimée du résultat final.

Lorsque l’argument transmis au paramètre reviver n’est pas une fonction, ActionScript renvoie une exception TypeError avec l’ID d’erreur kJSONInvalidReviver. Il publie également un message d’erreur localisé.

Si la fonction parse() rencontre des clés dupliquées au sein d’un objet, la clé en double trouvée en dernier fournit la valeur pour toutes les occurrences précédentes de cette clé.

Paramètres

text:String — Chaîne JSON à analyser.
 
reviver:Function (default = null) — (Facultatif) Fonction qui transforme chaque paire clé/valeur qui est analysée

Valeur renvoyée
Object

stringify

()méthode 
public static function stringify(value:Object, replacer:* = null, space:* = null):String

Version du langage: ActionScript 3.0
Versions du moteur d’exécution: Flash Player 11, AIR 3.0

Renvoie une chaîne, au format JSON, qui représente une valeur ActionScript. La méthode stringify peut prendre trois paramètres.

Le paramètre value est requis. Ce paramètre est une valeur ActionScript. En règle générale, il s’agit d’un objet ou un tableau, mais il peut également s’agir d’une chaîne, d’une valeur booléenne, d’un nombre ou d’une valeur nulle.

Le paramètre replacer facultatif peut être une fonction ou un tableau de chaînes ou de numéros. S’il s’agit d’une fonction, celle-ci prend deux paramètres : une clé et d’une valeur. Vous pouvez utiliser cette fonction pour transformer ou filtrer chaque paire clé/valeur telle qu’elle est analysée. Si vous fournissez une fonction replacer, c’est votre valeur transformée ou filtrée pour chaque paire qui est renvoyée dans la fonction de sortie parse(), et non la valeur d’analyse par défaut. Si la fonction replacer renvoie undefined pour toute paire, la propriété est supprimée du résultat final. Si la fonction replacer est un tableau, il est utilisé comme filtre pour désigner les propriétés à inclure dans la sortie.

Lorsque l’argument transmis au paramètre replacer n’est ni un tableau ni une fonction, ActionScript renvoie une exception TypeError avec l’ID d’erreur kJSONInvalidReplacer. Il publie également un message d’erreur localisé.

Le paramètre space facultatif est une chaîne ou nombre qui permet à l’espace blanc d’être inséré dans la chaîne renvoyée pour améliorer la lisibilité. Les entrées dans les objets JSON et les tableaux JSON générés sont séparées par un espace issu du paramètre space. Cet espace comporte toujours entre 0 et 10 caractères. Si l’espace est une chaîne, l’espace dérivé correspond aux dix premiers caractères de cette chaîne. Si l’espace est un nombre non négatif x, l’espace correspond à x caractères d’espacement, jusqu’à un maximum de dix espaces. Lorsque l’argument transmis au paramètre space n’est pas une chaîne, mais un nombre, il est converti en chaîne en vue d’être utilisé en tant qu’espace dans la sortie. L’exécution se poursuit.

Lorsque la méthode stringify() rencontre une structure cyclique, elle renvoie une exception TypeError avec l’ID d’erreur kJSONCyclicStructure. Il publie également un message d’erreur localisé.

Paramètres

value:Object — Valeur ActionScript à convertir en chaîne JSON
 
replacer:* (default = null) — (Facultatif) Fonction ou tableau qui transforme ou filtre les paires clé/valeur dans la sortie stringify
 
space:* (default = null) — (Facultatif) Chaîne ou numéro qui contrôle les espaces blancs ajoutés dans la chaîne renvoyée

Valeur renvoyée
String
JSONExample.as

L'exemple suivant utilise la classe JSONExample pour afficher un aller-retour JSON dans ActionScript. Cette opération s’accomplit de la façon suivante :
  1. Le constructeur de JSONExample attribue une chaîne au membre text de la super classe et initialise un compteur interne.
  2. De plus, la classe définit un tableau qui peut contenir des objets JSONExample ayant été exportés dans JSON.
  3. JSONExample définit également une méthode toJSON() et une méthode revive(). La méthode toJSON() est appelée par JSON.stringify() pour sérialiser les objets JSONExample sur JSON. La méthode revive() peut être appelée à partir des méthodes JSON.parse() pour restaurer l'objet JSONExample intégral. Cette restauration est réalisée à l'aide d'un ID donné pour récupérer l'objet d'origine à partir du tableau d'objets revivable.
  4. Le script qui utilise la définition de classe crée un objet qui contient deux objets TextField et un objet JSONExample. Il crée également un tableau d'objets revivable pour le stockage d'objets TextField ayant été exportés dans JSON.
  5. La fonction replacer de JSON.stringify() filtre les objets TextField hors de la chaîne JSON. A la place de chaque objet supprimé, replacer fournit un repère avec un ID qui peut être utilisé ultérieurement pour extraire l'objet. D'autre part, les objets JSONExample passent à travers en fonction de leur codage natif JSON.
  6. La fonction reviver de la méthode parse() recrée l'objet original en récupérant tous les objets TextField et JSONExample référencés.
 
 package {
    import flash.text.TextField;
    public class JSONExample extends TextField
    {
        static var nextId = 10000;
        static var revivable_objects:Array = [];
            public var id;

        public function JSONExample(s:String){
            super.text = s;
            id = ++nextId;
        }
        public function toJSON(k):*
        {
            // To be called internally by the JSON.stringify() method.
            // Save the original object internally.
            // Write out only a generated ID and the text value.
            revivable_objects[id] = this;
            return {"classJSONExample":{"reviveId":id,"contents":this.text}};
        }
        public static function revive(id:int):JSONExample
        {
            // For explicit use in the JSON.parse() method.
            // Revives the object using the ID obtained from the JSON string.
            return revivable_objects[id];
        }
    }
}

import flash.text.TextField;

var lastId = 20000;
var tf1:TextField = new TextField();
tf1.text = "Lorem ipsum";
var tf2:TextField = new TextField();
tf2.text = "Laughing cows";
var nt:JSONExample = new JSONExample("It was the best of times; it was the worst of times.");

var obj:Object = {a:tf1, b:nt, c:tf2};
var revivable_objects:Array = new Array();

var json_out = JSON.stringify(obj, function(k,v){
        if (v is JSONExample)
        {
            // Send JSONExample objects to the JSON output.
            // Note that stringify() calls JSONExample.toJSON() to serialize this object.
            return v;
        }
        if (v is TextField)
        {
            // Remove TextField objects from the JSON output.
            // Save the original object for reviving later.
            // Return a new object containing an identification marker
            // and the original object's revival ID.
            revivable_objects[++lastId] = v;
            return {"classTextField":{"reviveId":lastId}};
        }
        return v;
    }
);
               
trace("json_out: " + json_out);

var json_in = JSON.parse(json_out, function(k,v) {
        if ("classTextField" in v) { // special marker tag from stringify() replacer code
            // Retrieve the original object based on the ID stored in the stringify() replacer function.
            var id = v["classTextField"].reviveId;
            return revivable_objects[id];
        } else if ("classJSONExample" in v){
            // Retrieve the original object based on the ID generated in JSONExample.toJSON().
            return JSONExample.revive(v["classJSONExample"].reviveId);
        }
        return v;
    }
);

if (json_in.a)
{
    if (json_in.a.hasOwnProperty("text"))
        {
            trace("json_in.a: " + json_in.a.text);
        }
}
if (json_in.b)
{
    if (json_in.b.hasOwnProperty("text"))
        {
            trace("json_in.b: " + json_in.b.text);
        }
}

if (json_in.c)
{
    if (json_in.c.hasOwnProperty("text"))
        {
            trace("json_in.c: " + json_in.c.text);
        }
}
               




[ X ]Pourquoi existe-t-il du contenu en anglais ?
Certaines parties du Guide de référence ActionScript 3.0 sont en anglais

Tout le contenu du Guide de référence ActionScript 3.0 n’a pas été traduit dans toutes les langues. Si un élément de langage n’est pas traduit, il s’affiche en anglais. Par exemple, la classe ga.controls.HelpBox n’est traduite dans aucune langue. Ainsi, dans la version française du guide de référence, la classe ga.controls.HelpBox apparaît en anglais.