2015-08-18 60 views
0

我想從包含文件路徑值的Web API返回的Json數組中創建一個字典。我在這裏提取了一個示例NewtonSoft JsonConverter和斜槓字符

JsonConvert.DeserializeObject<Dictionary<string, string>>("[{'Path':'\6\6553_20140729_134527059.mp3'}]") 

各種組合會產生以下錯誤。只有一種方法可行,我很想知道爲什麼。如果有人能幫助..非常感謝

Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'System.Collections.Generic.Dictionary`2[System.String,System.String]' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly. 
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array. 
Path '', line 1, position 1 

下拋出上述錯誤

//Escape with double slash 
JsonConvert.DeserializeObject<Dictionary<string, string>>("[{'Path':'\\6\\6553_20140729_134527059.mp3'}]") 

//Escape with quadruple slash 
JsonConvert.DeserializeObject<Dictionary<string, string>>("[{'Path':'\\\\6\\\\6553_20140729_134527059.mp3'}]") 

//Multiple Json Objects in array 
JsonConvert.DeserializeObject<Dictionary<string, string>>("[{'Path':'\\6\\6553_20140729_134527059.mp3'},{'Path':'\\6\\6553_20140729_134527059.mp3'}]") 

//Double slash, single Json object 
JsonConvert.DeserializeObject<Dictionary<string, string>>("{'Path':'\\6\\6553_20140729_134527059.mp3'}") 

這是工作

//Quadruple slash, single object 
    JsonConvert.DeserializeObject<Dictionary<string, string>>("{'Path':'\\\\6\\\\6553_20140729_134527059.mp3'}") 

就像我剛纔所說,任何幫助將唯一非常感謝

所有的測試在視覺工作室完成快速手錶

+0

看到錯誤信息**'不能反序列化當前的JSON數組(例如[1,2,3])到類型'System.Collections.Generic.Dictionary'2 [System.String,System.String]'* *你的json是數組/列表。嘗試反序列化List >' – Eser

回答

0

當JSON以「[」開頭時,表示它代表列表/數組,因此解串器期望有某種列表作爲參數,您的情況爲 List<Dictionary<string, string>>