C# 为什么我会得到一个;转换值时出错“;使用Json.Net解析时出现异常

C# 为什么我会得到一个;转换值时出错“;使用Json.Net解析时出现异常,c#,json,file,class,parsing,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; } pub

我试图解析.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.. ;)
        }

    }
我的代码如下所示:

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那么多来完全了解它是如何工作的。我是那种喜欢边干边学的人。但是,如果您有一些关于C#中json的好页面可以阅读,我很乐意阅读:)

编辑:

我快疯了!我不明白为什么我会遇到这个例外

我只得到文件路径的异常

疯狂的是,我有另一个文件,里面有所有的文件路径,我也用json读取。这很好

“隔离区”的解决方案是读取只包含文件路径的文件,然后用它来填充我的曲目列表?但是把这件事弄清楚会很好。。
非常感谢您的帮助!:)

您在类中将
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
}

要从json自动创建类模板,请使用

您在类中将
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
}

要从json自动创建类模板,请使用

,因此,我感到非常尴尬,不得不自己回答这个问题

我忘记做的是从文件阅读器中删除一个字母“p”。因此,它得到的文件只有音乐的文件路径,而不是艺术家、曲目名称、专辑名称等

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


自从我第一次遇到这个问题已经有2-3天了,这是一个很容易解决的问题。

因此,我感到很尴尬,不得不自己回答这个问题

我忘记做的是从文件阅读器中删除一个字母“p”。因此,它得到的文件只有音乐的文件路径,而不是艺术家、曲目名称、专辑名称等

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


自从我第一次遇到这个问题已经有2-3天了,这是一个很容易解决的问题。

谢谢。不幸的是,它并没有解决我的问题:(我仍然得到相同的异常。“将值“\\DAVIDIOSO\Users\hasht\u 000\Music\Dirty South-直到最后(Michael Brun Mix)[feat.Joe Gil].mp3”转换为“MediaplayerV2WPF.Track.Path”[0]”,第1行,第109位。”“MediaplayerV2WPF.Track”出现错误是否表明它与JSON反序列化无关,而与“Filepath”中存储的实际值无关?我在这里可能有点不对劲,但您的JSON反序列化似乎很好,问题在于您试图使用b提供的文件路径在Media Player中加载曲目是JSON。可能有一些转义序列?是的,这很有意义。但是我如何将JSON信息输入到类中?这不是我做“教科书”的方式吗?谢谢。不幸的是,这并不能解决我的问题:(我仍然得到相同的异常。“错误转换值”\\Davidiso\Users\hasht\u 000\Music\Dirty South-直到结尾(Michael Brun Mix)[feat.Joe Gil].mp3“输入'MediaplayerV2WPF.Track'。路径'[0]',第1行,位置109。”“MediaplayerV2WPF.Track”出现错误是否表明它与JSON反序列化无关,而与“Filepath”中存储的实际值无关?我在这里可能有点不对劲,但您的JSON反序列化似乎很好,问题在于您试图使用b提供的文件路径在Media Player中加载曲目是JSON。可能是一些转义序列?是的,这很有意义。但是我如何将JSON信息输入到类中呢?这不是我做“教科书”的方式吗方式?这是对你问题的有效回答吗?对于评论中的任何人来说,这是对问题的回答。OP发现问题的原因是打字错误,他/她正在解释原因。这些信息不应该出现在问题帖子中。这是对你问题的有效回答吗?对于评论中的任何人来说,这是对问题的回答。OP发现问题的原因是打字错误,他/她正在解释原因。此信息不应出现在问题帖子中。