我试图在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。
任何人都知道如何做到这一点?或者碰到了这个?
答案 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。