2013-10-08 113 views
1

我試圖從一個以.json文件解析的數據解析時,爲什麼我得到一個「錯誤轉換值」異常,並把它們稱爲「跟蹤」一類的列表與Json.Net

這個類看起來是這樣的:

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。這工作很好。

「貧民窟」解決方案將讀取該文件,其中只包含文件路徑並使用它來填充我的Track列表?但它會很高興得到這個整理出來.. 任何幫助真的很感激! :)

回答

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 
} 

自動創建從JSON使用類模板http://json2csharp.com/

+0

謝謝你。不幸的是,它並沒有解決我的問題:(我仍然得到相同的例外。「轉換價值錯誤」\\ DAVIDIOSO \ Users \ hasht_000 \音樂\骯髒的南 - 直到結束(邁克爾布倫混合)[壯舉喬吉爾] .mp3「鍵入'MediaplayerV2WPF.Track'。Path'[0]',line 1,position 109.」 – Tokfrans

+0

'MediaplayerV2WPF.Track'在錯誤中顯示與它無關JSON反序列化,但存儲在'Filepath'中的實際值?我可能在這裏沒有標記,但它似乎是你的JSON反序列化就好了,問題出現在你試圖加載媒體播放器的軌道與文件路徑提供JSON。一些轉義序列可能是? – JuStDaN

+0

是的,這是有道理的。但是,我如何才能將json信息導入課堂?我不是這樣做「教科書」的方式嗎? – Tokfrans

2

所以,我覺得挺不好意思來回答這個自己。

我忘了做的,是從filereader中刪除一個字母「p」。所以它得到的文件只有音樂文件路徑而不是藝術家,曲目名稱,專輯名稱等等......

我不敢相信我直到現在纔看到它!

自從我第一次得到這個問題,這已經是2-3天了,這是一個簡單的修復..

+0

這是您的問題的工作答案? – Marusyk

+2

對於評論中的任何人,這是對這個問題的答案。 OP發現錯字是問題的原因,他/她正在解釋原因。這些信息不應該在問題文章中。 – gunr2171