为什么我得到一个"错误转换值"使用Json.Net解析时出现异常

时间:2013-10-08 21:03:45

标签: c# json file class parsing

我正在尝试解析.json文件中的数据,并将它们放在名为“Track”的类的列表中

该课程如下:

public class Track
{
        public string Artist { get; set; }
        public string Album { get; set; }
        public string Title { get; set; }
        public int TrackNumber { get; set; }
        public string Filepath { get; set; }
        public int SongLength { get; set; }
        public Color RGB { get; set; }
}

我的代码看起来像这样:

private void Load()
    {
        using (StreamReader r = new StreamReader("C:\Users\Swagger\Desktop\Test\MusicCacheP.json"))
        {
            string json = r.ReadToEnd();
            List<Track> items = JsonConvert.DeserializeObject<List<Track>>(json);
            MSG(items.Count.ToString());
            //MSG is just a function which gives me a messagebox. I'm too lazy to write the full messagebox.show.. ;)
        }

    }

我不知道这是否重要,但这里有一些json代码:

{"Artist":"Dirty South","Album":"Until the End","Title":"Until the End (Michael Brun Mix) [feat. Joe Gil]","TrackNumber":0,"Filepath":"\\\\DAVIDIOSO\\Users\\hasht_000\\Music\\Dirty South - Until the End (Michael Brun Mix) [feat. Joe Gil].mp3","SongLength":21,"RGB":""}

我还没有真正使用Json来充分了解它是如何工作的。我是那种喜欢边做边学的人。但是如果你在C#中有一些关于json的好页面,我会很高兴看到它:)

编辑:

我疯了!我无法弄清楚为什么我会得到这个例外..

我只获得了文件路径的异常。

疯狂的是我有另一个文件包含其中的所有文件路径,我也用json读过。而且效果很好。

“ghetto”解决方案是读取仅包含文件路径的文件并使用它来填充我的Track列表?但是把这个整理好了会很好.. 任何帮助真的很感激! :)

2 个答案:

答案 0 :(得分:2)

您已在班级中将RGB定义为Color,并将json中的内容指定为字符串类型。您可以修改类以使字符串类型为RGB,然后将该字符串值转换为Color

public class RootObject
{
    public string Artist { get; set; }
    public string Album { get; set; }
    public string Title { get; set; }
    public int TrackNumber { get; set; }
    public string Filepath { get; set; }
    public int SongLength { get; set; }
    public string RGB { get; set; } //here
}

要使用http://json2csharp.com/

从json自动创建类模板

答案 1 :(得分:2)

所以,我自己不得不回答这个问题感到非常尴尬。

我忘记做的是从文件阅读器中删除一个字母“p”。所以它的文件只包含音乐的文件路径,而不是艺术家,曲目名称,专辑名称等......

我不敢相信我直到现在才看到它!

自从我第一次遇到这个问题以来已经过了2-3天,这很容易解决..