将自定义列表序列化为JSON,并使用Newtonsoft将其反序列化为该自定义列表

时间:2015-03-17 12:40:49

标签: c# json serialization json.net windows-store-apps

在我的Windows 8.1应用程序中,我希望将自定义生成的List的结果最佳地存储到本地存储中,以便稍后在应用程序关闭后我可以检索它。
Newtonsoft JSON序列化程序帮助我序列化List到字符串格式,我可以存储在任何文本文件中。但反序列化它不会获取所需的List。

班级

  public class BookDetailsItem
        {
            public string Id { get; set; }
            public ImageSource CoverImage { get; set; }
            public string Name { get; set; }
            public Visibility ProgressVisi { get; set; }
            public List<StoryDetailsItem> stories { get; set; }
        }
    public class StoryDetailsItem
        {
            public string Id { get; set; }
            public string Name { get; set; }           
            public ImageSource CoverImage { get; set; }
            public string Time { get; set; }
            public string Word { get; set; }
            public Visibility ProgressVisi { get; set; }
        }  

现在我将所需的项目添加到此类的列表中

List<BookDetailsItem> tempbook = new List<BookDetailsItem>();
tempbook.Add(......);

现在序列化我可以将它存储在任何txt文件中

string tempstr = JsonConvert.SerializeObject(tempbook);

但反序列化它如何才能获得相同的List我得到的是一个不正确格式的对象

var obj1 = (JsonConvert.DeserializeObject(tempstr));

我是否可以通过其他方式更轻松,更优化地将这些数据存储在本地存储中(无需创建SQlite数据库)。

2 个答案:

答案 0 :(得分:2)

使用

var obj1 = JsonConvert.DeserializeObject<List<BookDetailsItem>>(tempstr)

为反序列化器提供类型信息。

答案 1 :(得分:1)

无法序列化ImageSource对象。

尝试将其保存为byte []