Переменная доступа в JSON с помощью JQuery

0

Мне трудно получить доступ к переменной, возвращаемой из 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, но я думаю, что я должен делать это неправильно, потому что он возвращает пустой.

  • 0
    Структура JSON странная. collation не является объектом, это элемент массива suggestions который содержит строку "collation" . Следующий элемент в массиве suggestsions после "collation" - это массив, содержащий нужные данные. Вы генерируете эти данные? Будет очень сложно использовать в этой структуре
  • 0
    Нет, я не генерирую эти данные, они выводятся программой под названием 'solr'. Я думал, что это тоже выглядело странно, интересно, это ошибка. Тем не менее, могу ли я получить к нему доступ в его текущем состоянии?
Показать ещё 2 комментария
Теги:
solr

1 ответ

1
Лучший ответ

То, как данные структурированы, вам нужно будет получить индекс "collation" в массиве suggestions, а затем получить массив, являющийся следующим индексом, и получить доступ к второму элементу этого массива.

Конечно, похоже, что целью вывода было использование объектов, но структура вывода ошибочна

var suggestions=resp.spellcheck.suggestions;

var colQuery= suggestions[ suggestions.indexOf('collation') +1][1];

DEMO

Даже когда-то найденный результат плохо структурирован и должен будет выполнить синтаксический анализ строк, чтобы получить от него полезные данные

  • 0
    Удивительно! Делает трюк на данный момент. Надеюсь, SOLR выпустит исправление для этого в ближайшее время.
  • 0
    Я бы представил как ошибку ... это очень сложно работать. Остерегайтесь также, когда они исправляют это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню