Json .Net 反序列化

Json .Net Deserialize

我几乎不需要帮助。我有类型的电影,它有一些属性。我有这部电影的清单(清单)。当我序列化它并保存到文件时,我无法加载和反序列化它(某种类型的 Xaml 错误)。 这是保存在文件中的 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"
    }
]

这里是反序列化它的代码:

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

感谢您的帮助。

使用 JSON.Net 的最佳方法是创建一个 class 定义来描述您的 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);
}