私はelasticsearchインスタンスにクエリを送信するnode.jsサーバーを実行しています。クエリによって返されたJSONの例を次に示します。elasticsearch autosuggest return tricky 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'は、[配列(括弧、'であるusefuleすることができ、このスニペットの下
options
の配列を取得するために
postSuggest[0].options
postSuggest[0]
でpostSuggestを取得する必要があり、その後 ..] ')を使用しています(中括弧' {..} ')。最初に配列のインデックスにアクセスする必要があります - 'postSuggest [0] .options'。 - [アクセス/プロセス(ネストされたオブジェクト、配列またはJSON)](https://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json) –問題が修正されました。ありがとうございます。私は配列ではないことを登録したことはありません。 – IanCZane