C# 反序列化需要字典但获取列表的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

我正在尝试用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 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吗?