首页 新闻 搜索 专区 学院

序列化和反序列化多个对象

0
[已解决问题] 解决于 2016-12-04 21:13

请问:

     每当创建一个对象时就将这个对象序列化存储在一个文件中,可是当反序列化读取这些对象时,只能读取一个。如何才能全部读取。

    (自己网上查了一些说每次序列化进去对象的时候都会有Header,要重写ObjectOutputStream,但是重写之后还一直报异常java.io.StreamCorruptedException: invalid s)

丿少女梦丶的主页 丿少女梦丶 | 初学一级 | 园豆:172
提问于:2016-12-02 21:41
< >
分享
最佳答案
0

C#是可以的,这个是我封装的一个方法

public static List<T> JsonStrToModelList<T>(string str) where T : class
{
    if (str != "" && str.Length > 5)
    {
        JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
        List<T> modelList = javaScriptSerializer.Deserialize(str, typeof(List<T>)) as List<T>;
        return modelList;
    }
    else { return null; }
}

奖励园豆:5
德展自动化 | 菜鸟二级 |园豆:206 | 2016-12-03 10:19

谢谢   不过这个是C语言吗  我是个初学者  看不懂   麻烦可以用java写吗

丿少女梦丶 | 园豆:172 (初学一级) | 2016-12-03 12:23

@六点丶: 不好意思啊,我没有用过Java。我用的是C#,听说跟Java很多地方是一样的。

德展自动化 | 园豆:206 (菜鸟二级) | 2016-12-04 16:09

@德展自动化: 谢谢。那我再理解一下您的解答

丿少女梦丶 | 园豆:172 (初学一级) | 2016-12-04 21:11

@六点丶: 其实核心的就是这个

List<T> modelList = javaScriptSerializer.Deserialize(str, typeof(List<T>)) as List<T>;

如果序列化的不是集合对象:

T modelList = javaScriptSerializer.Deserialize(str, typeof(T)) as T;

我是为了使用方便将它封装成了一个泛型方法

德展自动化 | 园豆:206 (菜鸟二级) | 2016-12-05 11:37

@德展自动化: 你的意思是我直接反序列化一个集合到文件中吗

丿少女梦丶 | 园豆:172 (初学一级) | 2016-12-05 11:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册