C# 无法将Json文件反序列化为字符串为“0”的KeyValuePair列表;“关键”;

C# 无法将Json文件反序列化为字符串为“0”的KeyValuePair列表;“关键”;,c#,json,json.net,C#,Json,Json.net,我很难从Solr搜索引擎反序列化json响应 我使用newtonsoftjson.NET Solr的简化响应: { “建议”:[ { “someword”:{ “numFound”:1 } } ] } 我将其反序列化为KeyValuePair的列表 customobject test=Newtonsoft.Json.JsonConvert.DeserializeObject(jsonText); 它一直工作,直到用户键入“key”一词,所以Solr返回了JSON: { “建议”:[ { “关

我很难从Solr搜索引擎反序列化json响应

我使用newtonsoftjson.NET

Solr的简化响应:

{
“建议”:[
{
“someword”:{
“numFound”:1
}
}
]
}
我将其反序列化为
KeyValuePair
的列表

customobject test=Newtonsoft.Json.JsonConvert.DeserializeObject(jsonText);
它一直工作,直到用户键入“key”一词,所以Solr返回了JSON:

{
“建议”:[
{
“关键”:{
“numFound”:1
}
}
]
}
此JSON的反序列化引发以下错误:

分析值时遇到意外字符

。。。 好啊我刚刚意识到,即使它没有引发“key”以外的异常,它也不起作用,因为输出对象中的KeyValuePair总是空的

我以前从未意识到这个问题,因为Json(拼写检查建议)的这一部分从未使用过

这么简单的解决方法:我们不再序列化建议

但是,如果有人仍然想回答这个问题,您将以什么样的对象反序列化这个Json(来自Solr)

{
“建议”:
[
{“black”:{
“numFound”:10,
“startOffset”:0,
“内偏移”:5,
“origFreq”:0,
“建议”:[{
“单词”:“返回”,
“freq”:78},
{
“单词”:“黑色”,
“频率”:1}
]}},
{“键”:{
“numFound”:1,
“startOffset”:6,
“内偏移”:9,
“origFreq”:12,
“建议”:[{
“字”:“键”,
“频率”:15}]}]
}
我认为字典做不到这一点:

Newtonsoft.Json.JsonSerializationException:'无法将当前Json数组(例如[1,2,3])反序列化为'System.Collections.Generic.Dictionary`2[System.String,Test.SpellCheckSuggestion]'类型,因为该类型需要一个Json对象(例如{“name”:“value”})才能正确反序列化


如上面的评论所述,解决方案是使用字典列表。(不仅仅是字典,也不是KeyValuePair列表)

列表

如果您尝试将其反序列化到字典中会怎么样?Dictionary应该是具有唯一键的键/值对的集合。请包括CustomObject的代码和用于反序列化的代码。@Dan您能发布一个更完整的示例吗,包括您的
CustomObject
?我将其反序列化为
KeyValuePair
列表-然后请您的问题提供一个示例,通过包括您的数据模型来演示问题。看
公共列表建议{get;set;}
适用于问题中显示的所有JSON,请参阅,这样我就无法重现您的问题。@dbc-谢谢您的帮助!我把这个问题标为已回答。