我有一个动态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
帮助?
答案 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());