任何序列化UIComponent的技巧

时间:2009-09-30 20:12:10

标签: xml actionscript-3 json serialization binary

我正在尝试序列化扩展的UIComponent(com.esri.ags.layers.GraphicsLayer)以使用WebOrb在MSSQL Server数据库中发送和存储。

显然,这些类型的对象并不是要序列化的,我没有使用flash byteArray进行太多的序列化/反序列化。我还尝试了其他几种库(FlexXB,asx3m,JSONLite,as3corelib)和其他格式(xml,json),没有运气。

在我写一些丑陋的功能之前,我希望有人可能已经知道如何做到这一点。任何想法/建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

获得所需内容的一种简单方法是覆盖组件类的toString()方法,并让它返回JSON或XML(无论你喜欢什么)。为了补充toString()方法,您可能需要在组件类中使用静态方法将json / xml表示反序列化为对象。

  

显然,这些类型的对象   并不意味着被序列化,我   没有多少   使用。序列化/反序列化   flash byteArray

ByteArray可能不适合UIComponent,除了位图,加载的SWF文件等(我之前已经看过用于此类事情的ByteArrays)。

如果您需要可靠地序列化组件,那么最好编写自己的序列化/反序列化方法。最合适的方法是创建一个基本组件(一个继承自UIComponent的组件),它提供这些序列化方法,并让每个继承类用其附加属性覆盖它。最后,每个扩展类都应该调用super()方法来获取基类的序列化属性。

听起来很复杂,但这很简单且很常见(例如在Cocoa中)。

答案 1 :(得分:0)

我建议使用自定义序列化技术。它使您可以完全控制正在生成/使用的xml,尤其是在您要处理UIComponent的情况下(它们不是非常序列化)。 FlexXB以IXmlSerializable接口的形式提供自定义序列化的入口点,需要由目标实现。

我个人赞成的另一个想法是:D,将采用模型视图方法。您将创建表示应用程序模型的对象层次结构。那么视图将只是显示层的一部分。每个视图都接受特定类型的对象作为数据,并相应地呈现信息。然后,添加/删除视图将转换为添加/删除模型对象。因此,您不必关心显示视图中的序列化,您可以在模型对象中实现它,使它们成为自动序列化的理想选择(您可以将它们设置为byteArray或XML,或者使用哪种格式来存储它们)。此外,您可以随意更改显示视图。这是相当多的工作,但我相信它会及时得到回报。

祝你好运,

亚历