我正在尝试序列化扩展的UIComponent(com.esri.ags.layers.GraphicsLayer)以使用WebOrb在MSSQL Server数据库中发送和存储。
显然,这些类型的对象并不是要序列化的,我没有使用flash byteArray进行太多的序列化/反序列化。我还尝试了其他几种库(FlexXB,asx3m,JSONLite,as3corelib)和其他格式(xml,json),没有运气。
在我写一些丑陋的功能之前,我希望有人可能已经知道如何做到这一点。任何想法/建议将不胜感激。
答案 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,或者使用哪种格式来存储它们)。此外,您可以随意更改显示视图。这是相当多的工作,但我相信它会及时得到回报。
祝你好运,亚历