反序列化需要字典但获取列表的json响应

时间:2011-10-26 18:44:49

标签: 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 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>

如何将JSON反序列化为字典?

问题是结果被格式化为“Cape Winelands”,而不是“Cape Winelands”:2

这是solr返回它的方式,我无法控制它,并且更喜欢使用JSON而不是XML。

任何人都知道如何做到这一点?或者碰到了这个?

2 个答案:

答案 0 :(得分:0)

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);

答案 1 :(得分:0)

严格来说,关于Solr,您可以在请求参数中指定json.nl = map,它将根据您的需要返回名称值对中的facets。