Comment décoder Json à l'aide de code JSON ou actionjson en Flex 3
J'ai le dessous de Json (wf.json)
{
"workflow":{
"template":"Analysis1",
"start":{
"instance":"HDA_run1",
"user":"symtest",
"date":"3-Mar-2012",
"timestamp":"1330948220475"
},
"host":{
"name":"bartla",
"user":"symtest1",
"password":"symtest1",
"installpath":"",
"product":""
},
"javadump":{
"pid":"8989",
"corefilename":"",
"heapdump":"",
"stack":"",
"JAVA_HOME":""
},
"mat":{
},
"email":{
"to":"[email protected]",
"subject":"",
"message":""
},
"end":{
}
}
}
Comme vous pouvez le voir il y a 7 éléments (ou des sous-titres à l'intérieur de la vedette principale workflow
). Sous chaque article, il peut avoir un autre ensemble de propriétés, par exemple: e-mail (item)
a 3 propriétés ("name":"value")
.
En se basant sur le nombre de propriétés j'ai besoin d'être en mesure de créer des contrôles (Text)
dans mon Flex 3 de l'INTERFACE utilisateur.
J'ai lu ici que actionjson est de 5-6x plus rapide que la as3corelib, mais je ne suis pas en mesure de trouver un exemple de code pour cela. Le actionjson doc dit qu'il fonctionner de la même manière que corelib, donc j'ai même essayé de import com.adobe.serialization.json.JSON; JSON.decode(rawData)
mais il est incapable de trouver JSON
.
Ci-dessous mon code
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" minWidth="955" minHeight="600"
creationComplete="service.send()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
private function onJSONLoad(event:ResultEvent):void
{
//get the raw JSON data and cast to String
var rawData:String = String(event.result);
//Alert.show(rawData); This prints my JSON String
var obj:Object = decodeJson(rawData);
/*error call to possibly undefined method decodeJson*/
Alert.show(obj.toString());
}
]]>
</mx:Script>
<mx:HTTPService id="service" resultFormat="text"
url="/cjb/wf.json"
result="onJSONLoad(event)" />
</mx:Application>
Merci de m'aider à chercher name, values
si tout à partir de chaque élément. Grâce
Est-il pas possible d'extraire les données json à partir d'un objet (non personnalisés) comme cela se fait dans jquery?
Mise à jour avec Chemin de génération Flex
tous les liens où je peux lire & signifie qu'il n'est valable que pour Flash Player 11 & ci-dessus?
help.adobe.com/en_US/as3/dev/... et oui, c'est FP 11+
Merci, après lire, Il semble que j'ai besoin de créer des classes pour tenir les propriétés, mais dans mon cas je ne sais pas le nombre de propriétés d'un élément est d'avoir
(0 or more)
. Donc, ce sera ma meilleure option?Venez pour penser à elle: Flex 3 est livré avec un playerglobal.swc que les objectifs de FlashPlayer 9. Donc, vous devez compiler votre Flex 3 app avec le Flex 4.5 compilateur ou remplacer que playerglobal.swc avec celui du kit SDK Flex 4.5. Est l'une de ces approches acceptable pour vous?
OriginalL'auteur abi1964 | 2012-03-12
Vous devez vous connecter pour publier un commentaire.
Si le plus rapide de l'analyseur est ce que vous voulez, alors vous aurez envie d'utiliser JSON native de l'analyse. Son utilisation est aussi simple que cela:
La JSON classe est situé dans le package racine, donc pas besoin d'importer quoi que ce soit. Vous pouvez trouver des informations sur son utilisation dans le docs.
Cependant natif JSON est uniquement disponible pour Flash Player 11 ou supérieur, ce qui signifie que vous aurez à la cible, à moins que la version de lecteur. Depuis votre compilation d'un Flex 3 application, il sera la cible 9 de Flash Player par défaut. Si vos besoins ne pas vous interdire de ciblage FP11+, la meilleure solution est de compiler avec le Flex 4.6 (ou plus) SDK. La capture d'écran dans votre question montre que vous êtes à l'aide de Flex 3.5, de sorte que vous aurez à changer ça dans le "build path" paramètres".
Si vous souhaitez parcourir l'objet de façon dynamique, vous pouvez le faire avec un simple 'pour' boucle:
Si vous voulez le faire de manière récursive, vous pouvez vérifier si une valeur est un Objet ou pas:
Analysis1
, pourAlert.show(obj.workflow.template); Alert.show(obj.workflow.length()); Alert.show(obj.workflow[1]);
code, mais plus tard, les alertes ne semble pas fonctionner. Je voulais obtenir toutes leskeys
&values
comme je l'ai mentionné avant, il est dynamique, et je ne sais pas ce que les clés et les valeurs du Json peut contenir. Donc peut-être une sorte de parcours et je vais obtenir toutes les clés. Est-il possible? Merci et désolé pour, moi étant un noobJ'ai ajouté une dynamique de la traversée à l'exemple de ma réponse. Aussi, vous pouvez compiler un Flex3 app avec le Flex 4.6 compilateur. Vous avez juste à être certain que les exigences de vos clients vous permettent de cibler FP 11
Génial.. exactement ce que je voulais. Merci très gentil de l'information.
juste pour le plaisir des autres newbie que je suis l'ajout de ma réponse, mais le mérite en revient à vous 🙂
OriginalL'auteur RIAstar
test.json
{
"nom": "dibneg",
"age" : "67",
le "sexe": "la femme",
"imagePath": "kamil.jpg"
}
OriginalL'auteur Dinesh
Après la solution de RIAstar, c'est ce que j'ai fait (Flex 3.5 compilateur & 4.6 compilateur de code)
Flex 3.5 compilateur à l'aide de as3corelib.cfc pour JSON
sortie
Flex 4.6 compilateur en utilisant Json natif d'analyse
sortie
OriginalL'auteur abi1964
qui a fonctionné pour moi
ensuite, vous pouvez soit construire de nouveaux type d'objet(s) ou juste les valeurs de l'accès soit
ou
ce dernier est bon pour la dynamique valus/clés nécessaires plutôt que de connu valeurs de clé
import com.adobe.serialization.json.JSONDecoder; var obj = JSON.decode(event.result.toString()); Alert.show(obj.template);
mais je me donne l'alerte vide de la boîte deAussi est-il JSON natif d'analyse?
Non, il n'est pas et n'est pas non plus 'actionjson'. C'est l'un de "as3corelib" qui vous cherchez à remplacer.
Et que l'alerte n'est pas montrer quoi que ce soit parce que vous avez besoin pour accéder à cette valeur par le biais du
result.workflow.template
au lieu deresult.template
. Pas de réponse à la question et une erreur: -1OriginalL'auteur DrogoNevets