flex数据转换之JSON和XML

2 篇文章 0 订阅
1 篇文章 0 订阅

项目中有个业务场景需要servlet给flex返回一系列属性对象,既希望如同

blaze+remoteObject调用java接口那样能获得一个类似Map或者List的面向对象对象。

         目前已知的servlet通过pResponse.getWriter().write("返回信息”);的方式返回给前台信息,这里可考虑用json或者XML处理。

         这里分别简述下两者的用法。

一、JSON

 

要在flex中使用json,首先要下一个json包。

代码示例:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
	<mx:Script>
		<![CDATA[
			import com.adobe.serialization.json.JSON;
			
			private var jsonStr1:String =  '{"name":"xiaolu","age":"20","sex":"male"}';
			[Bindable] private var jsonObject1:Object;
			[Bindable] private var jsonStr2:String;

			/**
			 * json串转换为as对象
			 */ 
			public function json2as(jsonStr:String):void{
				jsonObject1 = JSON.decode(jsonStr) as Object;
			}
			/**
			 * as对象转换为json串
			 */ 
			public function as2json():void{
				var jsonObject = new Object();
				jsonObject['name'] = userName.text;
				jsonObject['sex'] = userAge.text;
				jsonObject['age'] = userSex.text;
				jsonStr2 = JSON.encode(jsonObject) as String;
			}
		]]>
	</mx:Script>
<mx:Panel width="100%" height="100%">
	<mx:HBox>
		<mx:Form>
			<mx:FormItem label="jsonString">
				<mx:TextArea id="jsonText" text="{jsonStr1}" />
			</mx:FormItem>
		</mx:Form>
		<mx:Button id="but1" label="json2as" click="json2as(jsonText.text);" />
		<mx:Form>
			<mx:FormItem label="name:">
				<mx:TextInput text="{jsonObject1.name}" />
			</mx:FormItem>
			<mx:FormItem label="age:">
				<mx:TextInput text="{jsonObject1.age}" />
			</mx:FormItem>
			<mx:FormItem label="sex:">
				<mx:TextInput text="{jsonObject1.sex}" />
			</mx:FormItem>
		</mx:Form>	
			
	</mx:HBox>
	<mx:HBox width="70%">
		<mx:Form>
			<mx:FormItem label="name:">
				<mx:TextInput id="userName" text="xiao" />
			</mx:FormItem>
			<mx:FormItem label="age:">
				<mx:TextInput id="userAge" text="20" />
			</mx:FormItem>
			<mx:FormItem label="sex:">
				<mx:TextInput id="userSex" text="male" />
			</mx:FormItem>
		</mx:Form>	
		<mx:Button id="but2" label="as2json" click="as2json();" />
		<mx:Form>
			<mx:FormItem label="jsonString">
				<mx:TextArea text="{jsonStr2}" />
			</mx:FormItem>
		</mx:Form>			
	</mx:HBox>
</mx:Panel>	
</mx:Application>


二、XML

转换过程

String->XMLDocument->Object

 

代码示例(简略):

        

public function xml2Object():Object{
				var xmlStr:String = "<node name='xiao'age='20'></node>";
                var xmlDoc:XMLDocument = newXMLDocument(xmlStr);
                var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
                var resultObj:Object =decoder.decodeXML(xmlDoc);
                return resultObj;
			}

 

 

最后附上infoQ上的一篇精彩的文章

http://www.infoq.com/cn/articles/flex-xml-json;jsessionid=0F77EEC0C2B1473DDEE083C46A37CBB6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值