【问题标题】:How do I deserialize a Dictionary<string, string[]> in C#?如何在 C# 中反序列化 Dictionary<string, string[]>?
【发布时间】:2017-10-20 17:53:02
【问题描述】:

我有一个动态 JObject,它将字符串键映射到字符串数组。但是我在反序列化它时遇到了麻烦。我每次都会得到一个未捕获的运行时异常。

var mapStringToStrings =JsonConvert.DeserializeObject&lt;Dictionary&lt;string,string[]&gt;&gt;(payload.Map);

这是 JObject 包含的内容

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

这是错误:

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

帮助?

【问题讨论】:

  • payload.Map 到底是什么?是string吗?

标签: c# json dictionary


【解决方案1】:

您的 JObject 不是有效的 JSON,因为它周围有一对额外的 {}。以下是反序列化为Dictionary&lt;string, string[]&gt; 的有效 JSON:

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

【讨论】:

    【解决方案2】:

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

    作品:

    var mapStringToStrings = JsonConvert.DeserializeObject&lt;Dictionary&lt;string,string[]&gt;&gt;(payload.map.ToString());

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多