NewtonSoft JsonConverter和斜线字符

时间:2015-08-18 11:22:12

标签: c# asp.net json asp.net-web-api json.net

我正在尝试从包含文件路径值的Web API返回的Json数组创建一个字典。我在这里提取了一个样本

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'}")

就像我之前所说的,任何帮助都会非常感激

所有在视觉工作室快速观看的测试

1 个答案:

答案 0 :(得分:0)

当JSON以&#34; [&#34;开头时,表示它代表List / Array,因此反序列化器期望某种List作为参数, 在你的情况下List<Dictionary<string, string>>