2015-02-07 105 views
-1

我需要一点帮助。我有类型的电影有一些属性。我有这部电影的名单(名单)。当我序列化并保存到文件时,我无法加载和反序列化它(某些类型的Xaml错误)。 这里是JSON保存在文件中:Json .Net反序列化

[ 
    { 
     "cesta": "C:\\Users\\Kenny\\Videos\\[Glitch Hop or 110BPM] Rogue Night After Night [Monstercat Release].wmv", 
     "jmeno": "Test", 
     "serie": "0", 
     "hodnoceni": "", 
     "herci": "", 
     "rok": 0, 
     "dil": 0, 
     "obrazek": "file:///C:/Users/Kenny/Pictures/Pozadi­/1.jpg" 
    }, 
    { 
     "cesta": "C:\\Users\\Kenny\\Videos\\[EDM] Laszlo x WRLD You Me [Monstercat Release].mp4", 
     "jmeno": "Test2", 
     "serie": "0", 
     "hodnoceni": "", 
     "herci": "", 
     "rok": 0, 
     "dil": 0, 
     "obrazek": "file:///C:/Users/Kenny/Pictures/Pozadi/1.jpg" 
    } 
] 

这里是代码以反序列化:

List<Film> temp = JsonConvert.DeserializeObject<List<Film>>(json, new FilmConverter()); 

感谢您的帮助。

+0

你有什么错误? – 2015-02-07 15:29:07

+0

@sławomir-rosiek:'PresentationFramework.dll中出现'System.Windows.Markup.XamlParseException'类型的第一个机会异常' – user3315892 2015-02-07 15:35:44

+2

你能发布'FilmConverter'的代码吗?这个错误听起来完全不相关。我的猜测是它来自其他地方。 – 2015-02-07 15:55:59

回答

2

使用JSON.Net的最佳方式是创建一个描述JSON数据的类定义,并使用JsonConvert.DeserializeObject<>方法将JSON反序列化为对象。

例如:

public class FilmInfo 
{ 
    [JsonProperty("cesta")] 
    public string Path { get; set; } 

    [JsonProperty("rok")] 
    public int Year { get; set; } 

    // other properties 
    public string jmeno { get; set; } 
    public string serie { get; set; } 
    public string hodnoceni { get; set; } 
    public int dil { get; set; } 
    public string obrazek { get; set; } 
}; 

static void Main(string[] args) 
{ 
    var json = @" 
    [ 
     { 
      'cesta': 'C:\\Users\\Kenny\\Videos\\[Glitch Hop or 110BPM] Rogue Night After Night [Monstercat Release].wmv', 
      'jmeno': 'Test', 
      'serie': '0', 
      'hodnoceni': '', 
      'herci': '', 
      'rok': 0, 
      'dil': 0, 
      'obrazek': 'file:///C:/Users/Kenny/Pictures/Pozadi­/1.jpg' 
     }, 
     { 
      'cesta': 'C:\\Users\\Kenny\\Videos\\[EDM] Laszlo x WRLD You Me [Monstercat Release].mp4', 
      'jmeno': 'Test2', 
      'serie': '0', 
      'hodnoceni': '', 
      'herci': '', 
      'rok': 0, 
      'dil': 0, 
      'obrazek': 'file:///C:/Users/Kenny/Pictures/Pozadi/1.jpg' 
     } 
    ]"; 

    var list = JsonConvert.DeserializeObject<List<FilmInfo>>(json); 
} 
+0

我已经创建.net小提琴链接为您的代码:[链接](https://dotnetfiddle.net/CWQSof) – 2015-02-08 19:15:33

+0

谢谢,我没有注意到,我保存到文件的BitmapImage,而不是它的路径...但谢谢很多 :) – user3315892 2015-02-09 16:25:04