我们的Flex应用程序希望将请求和响应作为对象图(在那里没有任何异常)处理,例如响应成为某个视图的模型,并且是一个具有多层嵌套的结构。
**现在,理想情况下,我们希望将相同的客户端(和服务器)端对象用于不同的消息格式,例如XML和AMF,并具有可插入的序列化/反序列化层(!)
AMF使用了客户端到服务器的序列化和匹配 [RemoteClass(别名= “samples.contact.Contact”)] 但似乎没有XML的等价物。
我(有点乐观)正在寻找一种将对象图序列化为XML的简洁方法,以便从客户端通过HTTPService发送。
对于响应,默认的“对象”和“E4X”提供了一些反序列化。这很方便,但是我们当然没有将XML解包回特定AS类的细节,就像我们使用AMF一样。
有什么建议吗? (确实有一个关于将对象包装/转换为XML或XMLList的想法 - 但这似乎不起作用)
更新
这两个库看起来都很有用,我很可能会在某些时候使用它们。
目前,我真的需要简单地重复使用我们在任何情况下使用的AMF3序列化的元数据集([RemoteClass],[Transient])
..所以目前最好的选择是AMFX - 使用Flex数据服务进行AMF传输,使用XML - mx.messaging.channels.amfx包中的类 - 目前唯一的缺点是任何Externalizable类都转换为Hex字节流 - 和ArrayCollection是Externalizable! (希望通过在子类中序列化内部数组来解决方法..)
希望这对某人有用..
答案 0 :(得分:5)
关于Xml序列化,我可以给你一个起点(虽然可能有偏见:D)。
我正在开发一个项目,允许自动将AS3对象转换为xml和从xml转换。它基本上使用您用于通信的模型对象上的注释来构造xml结构或从xml填充对象。
它被称为FlexXB,您可以在http://code.google.com/p/flexxb/查看。 我开始这个项目是因为我在工作中遇到了同样的问题(即我有一个通过xml进行通信的服务器),我希望它对其他人有用。
干杯,
亚历
答案 1 :(得分:2)
又一个项目: FleXMLer (http://code.google.com/p/flexmler/)
它具有asx3m的直接态度,您可以在其中调用:
new FleXMLer().serialize(obj);
或者您可以自定义XML元素名称,跳过元素并调整数组和哈希表的序列化方式。 非常感谢您的意见。
答案 2 :(得分:1)
在http://code.google.com/p/asx3m结帐asx3m项目 它是Java XStream序列化库的AS3端口,运行良好。 我之所以这样做是因为我必须连接到一个服务器平台,该平台使用XStream来交换数据对象并在其中投入大量的工作。 它可以扩展为将AS3对象序列化为任何格式(例如JSON),并且可以利用用户定义的元标记的功能。 欢呼声,
的Tomislav
答案 3 :(得分:0)
还有一个包含Adobe的JSON库。而且由于ActionScript是JavaScript的超集......而JSON越来越受支持跨框架......