C# 反序列化需要字典但获取列表的json响应
我正在尝试用json反序列化来自solr的响应: 这是JSON:C# 反序列化需要字典但获取列表的json响应,c#,json,solr,deserialization,C#,Json,Solr,Deserialization,我正在尝试用json反序列化来自solr的响应: 这是JSON: "facet_counts": { "facet_queries": {}, "facet_fields": {"attraction": [ "Cape Winelands", 2, "Col de Bonhomme", 2, "Elephanta Caves", 2, "Kruger National Park", 2, "Manuel Antonio
"facet_counts": {
"facet_queries": {},
"facet_fields": {"attraction": [
"Cape Winelands",
2,
"Col de Bonhomme",
2,
"Elephanta Caves",
2,
"Kruger National Park",
2,
"Manuel Antonio Park",
2,
"San Francisco Monastery",
2,
"Tafraoute",
在XML中,这将是:
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="attraction">
<int name="Cape Winelands">2</int>
<int name="Col de Bonhomme">2</int>
<int name="Elephanta Caves">2</int>
<int name="Kruger National Park">2</int>
2.
2.
2.
2.
如何将JSON反序列化为字典
问题是结果的格式是“Cape Winelands”,2而不是“Cape Winelands”:2
这是solr返回它的方式,我无法控制它,我更喜欢使用JSON而不是XML
有人知道怎么做吗?或者遇到了这种情况?var数据={
var data = {
"facet_counts": {
"facet_queries": {},
"facet_fields": {
"attraction": [
"Cape Winelands",
2,
"Col de Bonhomme",
2,
"Elephanta Caves",
2,
"Kruger National Park",
2,
"Manuel Antonio Park",
2,
"San Francisco Monastery",
2
]
}
}
};
function arr_to_dict(a) {
var o = {}, i, len, p;
for (i = 0, len = a.length; i < len; i +=1) {
p = i%2?o[p]=a[i]:a[i];
}
return o;
}
arr_to_dict(data.facet_counts.facet_fields.attraction);
“单位计数”:{
“facet_查询”:{},
“面_字段”:{
“吸引力”:[
“怀恩兰角”,
2.
“博霍姆上校”,
2.
“Elephanta洞穴”,
2.
“克鲁格国家公园”,
2.
“曼努埃尔·安东尼奥公园”,
2.
“旧金山修道院”,
2.
]
}
}
};
函数arr_to_dict(a){
var o={},i,len,p;
对于(i=0,len=a.length;i
严格地说,关于Solr,您可以在请求参数中指定json.nl=map,这将根据需要以名称-值对的形式返回facet。是的,我可以手动解析它。我想知道是否有一种方法可以让c#反序列化中的System.Web.Script.Serialization.JavaScriptSerializer为我正确地执行它。我很好奇这个json格式是solr的错误还是应该是这样的。您可以编写一个继承自JavaScriptConverter的类,实现序列化和反序列化方法,并基本上在反序列化方法中处理数组到字典的转换。然后,当您创建JavaScriptSerializer对象时,您可以添加转换器,以便它知道如何将facet转换为字典。您考虑过使用SolrNet吗?