如何在C#中反序列化Dictionary <string,string [] =“”>?

时间:2017-10-20 17:53:03

标签: c# json dictionary

我有一个动态JObject,它将字符串键映射到字符串数组。但我无法反序列化它。我每次都得到一个未被捕获的运行时异常。

var mapStringToStrings =JsonConvert.DeserializeObject<Dictionary<string,string[]>>(payload.Map);

这是JObject包含的内容

   {{
     "c637c0bf-42ec-4f33-a679-5a220260db8e": [
       "dfe7514d-1e42-4c01-ac48-4557e4e34eb3"
     ] 
   }}

这就是错误:

The best overloaded method match for 'Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string,string[]>>(string)' has some invalid arguments

帮助?

2 个答案:

答案 0 :(得分:3)

你的JObject是无效的JSON,因为它周围有一对额外的{}。以下是有效的JSON,反序列化为Dictionary<string, string[]>

{
  "c637c0bf-42ec-4f33-a679-5a220260db8e": [
    "dfe7514d-1e42-4c01-ac48-4557e4e34eb3"
  ]
}

答案 1 :(得分:0)

如果动态JObject是一个复杂的对象,它将不会很好地反序列化 - 我只是通过在payload.map上调用.ToString()然后将其传递给反序列化器来解决。

<强>使用:

var mapStringToStrings = JsonConvert.DeserializeObject<Dictionary<string,string[]>>(payload.map.ToString());

相关问题