Я запускаю сервер node.js, который отправляет запросы в экземпляр elasticsearch. Вот пример JSON, возвращаемый запросом:elasticsearch autosuggest возвращающийся сложный JSON
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 9290,
"max_score": 0,
"hits": []
},
"suggest": {
"postSuggest": [
{
"text": "a",
"offset": 0,
"length": 1,
"options": [
{
"text": "Academic Librarian",
"score": 2
},
{
"text": "Able Seamen",
"score": 1
},
{
"text": "Academic Dean",
"score": 1
},
{
"text": "Academic Deans-Registrar",
"score": 1
},
{
"text": "Accessory Designer",
"score": 1
}
]
}
]
}
}
Мне нужно создать массив, содержащий каждую должность в виде строки. Я столкнулся с этим странным поведением, которое я не могу понять. Всякий раз, когда я пытаюсь вытащить значения из JSON, я не могу пойти ниже options
, или все возвращается как неопределенное.
Например:
arr.push(results.suggest.postSuggest)
будет толкать только то, что можно было ожидать: все вещи внутри postSuggest.
arr.push(results.suggest.postSuggest.options)
будет отображаться как неопределенный, хотя я могу видеть его, когда я запускаю его без .options
. Это справедливо и для всего, что находится ниже .options
.
Я думаю, что это может быть потому, что .options
является своего рода встроенной функции, которая действует на переменных, поэтому вместо того, чтобы видеть варианты, как JSON и вместо того, чтобы пытаться запустить функцию results.suggest.postSuggest
'postSuggest' является массивом (скобки,' [ ..] '), содержащий объект (фигурные скобки,' {..} '). Сначала вам нужно получить доступ к индексу массива - 'postSuggest [0] .options'. - [Доступ/процесс (вложенные) объекты, массивы или JSON] (https://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json) –
Исправлена проблема, спасибо. Я никогда не регистрировал, что это массив. – IanCZane