加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex中JSON转XML

发布时间:2020-12-15 01:08:05 所属栏目:百科 来源:网络整理
导读:1、Flex中JSON转XML ?xml version="1.0" encoding="utf-8"? s:Application xmlns:fx=" http://ns.adobe.com/mxml/2009 " ? ? ? ? ? xmlns:s="library://ns.adobe.com/flex/spark"? ? ? ? ? ? xmlns:mx="library://ns.adobe.com/flex/mx" ? ? ? ? ? creationC

1、Flex中JSON转XML

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="
http://ns.adobe.com/mxml/2009"
????? xmlns:s="library://ns.adobe.com/flex/spark"?
????? xmlns:mx="library://ns.adobe.com/flex/mx"
????? creationComplete="init()"
???? >
?<fx:Script>
??<![CDATA[
???import com.adobe.serialization.json.JSON;
???import com.adobe.serialization.json.JSONDecoder;
???import com.adobe.serialization.json.JSONEncoder;
???
???import mx.collections.ArrayCollection;
???import mx.controls.Alert;
???import mx.events.FlexEvent;
???import mx.rpc.events.FaultEvent;
???import mx.rpc.events.ResultEvent;
?
???private var jsXml:XML =<root/>;
???private var obj:Object ={"b":0,"c":0.5,"a":"a","obj":{"b":"str","c":1,"obj":

{"m":"mm","n":"nn","obj":{"a":1,"b":2}},"arr":[1,2,3,4]},4]};

???private function init():void{
????praseJson(obj,jsXml);
???}
???
???private function praseJson(obj:Object,nodeParent:XML):void{
????
????for(var item:Object in obj){
?????var node:XML = new XML(<{item}></{item}>);
?????if (item == "arr"){
??????var arr :Array = String(obj[item]).split(",");
??????for (var i:int=0;i<arr.length;i++){
???????node.a(new XML(<{i}>{arr[i]}</{i}>));
??????}
?????}else if (item == "obj"){
???????praseJson(obj[item],node);
?????}else{
??????node = new XML(<{item}>{obj[item]}</{item}>);
?????}
?????nodeParent.a(node);
????}
????Alert.show(nodeParent.toXMLString());
???}
???
??]]>
?</fx:Script>

</s:Application>

?

2、

Flex中XML转JSON

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="
http://ns.adobe.com/mxml/2009"
????? xmlns:s="library://ns.adobe.com/flex/spark"?
????? creationComplete="init()"
????? xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
????? minHeight="600">
?<fx:Script>
??<![CDATA[
???import com.adobe.serialization.json.JSON;
???import com.adobe.serialization.json.JSONDecoder;
???import com.adobe.serialization.json.JSONEncoder;
???
???import mx.collections.ArrayCollection;
???import mx.controls.Alert;
???import mx.events.FlexEvent;
???import mx.rpc.events.FaultEvent;
???import mx.rpc.events.ResultEvent;

??????????????????????? private var obj:Object= new Object();
???
???protected function init():void{
????xmlService.send();
???}
???
???protected function xmlService_faultHandler(event:FaultEvent):void{
????Alert.show(event.message.toString());
???}
???
???protected function xmlService_resultHandler(event:ResultEvent):void{
????trace("读取完毕")
????var xml:XML=event.result as XML;
????praseXML(xml,obj);
????//把对象转换成json
????var js:JSONEncoder = new JSONEncoder(obj);
????var jsonStr:String = js.getString();
????Alert.show(jsonStr);?
???}

???//把xml转换为对象
???private function praseXML(xml:XML,obj:Object):void{
????
????var xmlList:XMLList = xml.children();
????
????for each(var childrenXml:XML in xmlList){
?????var key:String = childrenXml.name().toString();
?????var value:String = childrenXml.toString();
?????
?????if(
childrenXml.@type=="int"){
??????if(obj is Array)
???????obj.push(int(value));
??????else
???????obj[key]=int(value);
?????}
?????else if(
childrenXml.@type=="String"){
??????if(obj is Array)
???????obj.push(String(value));
??????else
???????obj[key]=String(value);
?????}
?????else if(
childrenXml.@type=="Number"){
??????if(obj is Array)
???????obj.push(Number(value));
??????else
???????obj[key]=Number(value);
?????}
?????else if(
childrenXml.@type=="Array"){
??????var arr:Array=[];
??????if(obj is Array)
???????obj.push(arr);
??????else
???????obj[key]=arr;
??????praseXML(childrenXml,arr);
?????}
?????else if(
childrenXml.@type=="Object"){
??????var o:Object={};
??????if(obj is Array)
???????obj.push(o);
??????else
???????obj[key]=o;
??????praseXML(childrenXml,o);
?????}
???}
??]]>
?</fx:Script>
?<fx:Declarations>
??<s:HTTPService id="xmlService"
??????? url="test.xml"
??????? fault="xmlService_faultHandler(event)"
??????? result="xmlService_resultHandler(event)"
??????? resultFormat="e4x"
??????? showBusyCursor="true"/>
??
??<!-- 将非可视元素(例如服务、值对象)放在此处 -->
?</fx:Declarations>
</s:Application>


?

下面是test.xml

<?xml version="1.0" encoding="utf-8" ?> <data> ?<a type="String">a</a> ?<b type="int">b</b> ?<c type="Number">0.5</c> ?<arr type="Array"> ??<value type="int">1</value > ??<value type="int">2</value > ??<value type="int">3</value > ??<value type="int">4</value > ?</arr> ?<obj type="Object"> ??<a type="int">1</a> ??<b type="String">str</b> ??<c type="Object"> ???<c1 type="int">1</c1> ???<c2 type="String">str</c2> ??</c> ??<d type="Array"> ???<val type="Object"> ????<c1 type="int">1</c1> ????<c2 type="String">str</c2> ???</val> ???<val type="Object"> ????<c1 type="int">2</c1> ????<c2 type="String">str2</c2> ???</val> ???<val type="Object"> ????<c1 type="int">3</c1> ????<c2 type="String">str2</c2> ???</val> ??</d> ?</obj> </data>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读