Мне трудно получить доступ к переменной, возвращаемой из solr в формате JSON. Я использую JQuery.
Мой ответ JSON выглядит так
{
"responseHeader":{
"status":0,
"QTime":44,
"params":{
"indent":"true",
"q":"title:\"clrfying clan\" OR title:clrfying clan OR text:\"clrfying clan\" OR text:clrfying clan",
"wt":"json"}},
"response":{"numFound":0,"start":0,"docs":[]
},
"spellcheck":{
"suggestions":[
"clrfying",{
"numFound":1,
"startOffset":7,
"endOffset":15,
"suggestion":["clarifying"]},
"clan",{
"numFound":1,
"startOffset":16,
"endOffset":20,
"suggestion":["clean"]},
"clrfying",{
"numFound":1,
"startOffset":31,
"endOffset":39,
"suggestion":["clarifying"]},
"clan",{
"numFound":1,
"startOffset":40,
"endOffset":44,
"suggestion":["clean"]},
"clrfying",{
"numFound":1,
"startOffset":54,
"endOffset":62,
"suggestion":["clarifying"]},
"clan",{
"numFound":1,
"startOffset":63,
"endOffset":67,
"suggestion":["clean"]},
"clrfying",{
"numFound":1,
"startOffset":77,
"endOffset":85,
"suggestion":["clarifying"]},
"clan",{
"numFound":1,
"startOffset":86,
"endOffset":90,
"suggestion":["clean"]},
"collation",[
"collationQuery","title:\"clarifying clean\" OR title:clarifying clean OR text:\"clarifying clean\" OR text:clarifying clean",
"hits",44,
"misspellingsAndCorrections",[
"clrfying","clarifying",
"clan","clean",
"clrfying","clarifying",
"clan","clean",
"clrfying","clarifying",
"clan","clean",
"clrfying","clarifying",
"clan","clean"]]]}}
Часть, к которой я хочу получить доступ, - это
"collation",[
"collationQuery","title:\"clarifying clean\" OR title:clarifying clean OR text:\"clarifying clean\" OR text:clarifying clean",
Кажется, я не могу получить доступ к нему. Я получаю этот ответ с помощью JQuery со следующим кодом
$.getJSON("http://mydomain.com/solrsearch?q=title%3A%22clrfying%20clan%22+OR+title%3Aclrfying%20clan+OR+text%3A%22clrfying%20clan%22+OR+text%3Aclrfying%20clan&wt=json&indent=true", function(resp){})
Я попытался получить доступ к collationQuery, как этот resp.spellcheck.suggestions.collation.collationQuery, но я думаю, что я должен делать это неправильно, потому что он возвращает пустой.
То, как данные структурированы, вам нужно будет получить индекс "collation"
в массиве suggestions
, а затем получить массив, являющийся следующим индексом, и получить доступ к второму элементу этого массива.
Конечно, похоже, что целью вывода было использование объектов, но структура вывода ошибочна
var suggestions=resp.spellcheck.suggestions;
var colQuery= suggestions[ suggestions.indexOf('collation') +1][1];
Даже когда-то найденный результат плохо структурирован и должен будет выполнить синтаксический анализ строк, чтобы получить от него полезные данные
collation
не является объектом, это элемент массиваsuggestions
который содержит строку"collation"
. Следующий элемент в массивеsuggestsions
после"collation"
- это массив, содержащий нужные данные. Вы генерируете эти данные? Будет очень сложно использовать в этой структуре