序列化 Date 对象类型的 ArrayList [英] Serialize an ArrayList of Date object type

查看:26
本文介绍了序列化 Date 对象类型的 ArrayList的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想序列化一个包含 Date 对象的 Arraylist,然后能够反序列化它并迭代反序列化的版本.

I want to serialize an Arraylist containing Date objects and then be able to de-serialize it and iterate over the de-serialized version.

目前我有一个名为 DateSerialize 的类,它实现了 Serializable.我有一种将日期对象添加到数组列表中的方法,然后在完成后我想对其进行序列化.

Currently I have a class called DateSerialize that implements Serializable. I have a method for adding date objects into the arraylist and then once that is done i want to serialize it.

下次运行程序时,我想反序列化该数组列表并以相同的顺序和格式获取这些对象,并希望在其上运行迭代器.

Next time when i run the program i want to deserialize that arraylist and get those objects in the same order and format and want to run an iterator over it.

谁能帮我解决这个问题??

Can anyone help me out with this ??

谢谢!

推荐答案

如果你想使用 Serializable,你应该没有问题,因为 ArrayList 是 Serializable,就像 String 和每个原始类型一样.public class DateSerialize implements Serializable {} 应该做剩下的.您可以在此处.然而,还有很多其他的序列化选项.所以请更具体.

If you want to use Serializable, you should have no problems, because ArrayList is Serializable just as String and every primitive type. public class DateSerialize implements Serializable {} should do the rest. You can read more about this method here. However there are a lot of other options for serialization. So please be more specific.

ArrayList aList = new ArrayList();
MyBusinessObject obj = new MyBusinessObject();
obj.Name = "MyName";
obj.Address = "MyAddress";
obj.Phone = 435345;
aList.Add(obj);

第二:序列化ArrayList

/// <summary>
/// Serialize the ArrayList
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
private string SerializeArrayList(ArrayList obj) { 
  System.Xml.XmlDocument doc = new XmlDocument();
  Type[] extraTypes = new Type[1];
  extraTypes[0] = typeof(MyBusinessObject);
  System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), extraTypes); 
  System.IO.MemoryStream stream = new System.IO.MemoryStream(); 
  try { 
    serializer.Serialize(stream, obj); 
    stream.Position = 0; 
    doc.Load(stream); 
    return doc.InnerXml; 
  } catch { throw; } finally { 
    stream.Close(); 
    stream.Dispose(); 
  } 
}

第三:反序列化ArrayList

/// <summary>
/// DeSerialize serialized string
/// </summary>
/// <param name="serializedData"></param>
/// <returns></returns>
private ArrayList DeSerializeArrayList(string serializedData) {
  ArrayList list = new ArrayList();
  Type[] extraTypes = new Type[1];
  extraTypes[0] = typeof(MyBusinessObject);
  System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), extraTypes);
  XmlReader xReader = XmlReader.Create(new StringReader(serializedData));
  try {
    object obj = serializer.Deserialize(xReader);
    list = (ArrayList)obj;
  } catch { throw; } finally {
    xReader.Close();
  }
return list; 
}

这篇关于序列化 Date 对象类型的 ArrayList的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆