elasticsearch,Jquery,elasticsearch" /> elasticsearch,Jquery,elasticsearch" />

如何使用jQuery和getJSON访问这些json元素?

如何使用jQuery和getJSON访问这些json元素?,jquery,elasticsearch,Jquery,elasticsearch,我有一个从elasticsearch查询返回的数组,如下所示: [ [ "took", 2 ], [ "timed_out", false ], [ "_shards", { "total":5, "successful":5, "failed":0 } ], [ "hits", {

我有一个从elasticsearch查询返回的数组,如下所示:

[
   [
      "took",
      2
   ],
   [
      "timed_out",
      false
   ],
   [
      "_shards",
      {
         "total":5,
         "successful":5,
         "failed":0
      }
   ],
   [
      "hits",
      {
         "total":1,
         "max_score":0.2712221,
         "hits":[
            {
               "_index":"myindex",
               "_type":"mytype",
               "_id":"1",
               "_score":0.2712221,
               "_source":{
                  "id":1465,
                  "level":"Mid-Level",
                  "first":"Kung-Wei",
                  "last":"Liu",
                  "designation":"Associate",
                  "company":"Sullivan & Cromwell",
                  "email":"89liu1017@gmail.com",
                  "phone":"phone",
                  "city":"Hong Kong",
                  "country":"China",
                  "industry":"Legal",
                  "status":"none",
                  "owner":"hector@fastmail.se",
                  "remarks":"looks unusal",
                  "experience":"unknown ",
                  "created_at":"2014-05-09 06:01:50.401076"
               }
            }
         ]
      }
   ]
]
例如,使用getJSON调用,如何访问“指定”或“城市”?我的jQuery代码是:

$(document).ready(function(){
$.getJSON("/search", function(data) {
    //var txt1 = 'You have ' +data["total_count"]+ ' campaigns';
    //$("#notification").html(txt1);
    var txt  = '<table><tr>';
     $.each( data, function( key, value ) {
        txt += '<tr><td><a href="#" class="a"  id="' +this["id"]+ '">' +this["name"]+ '</a></td>';
        txt += '<td>' +this["id"]+ '</td>';
        txt += '<td>' +this["first"]+ '</td>';
        txt += '<td>' +this["last"]+ '</td>';
        txt += '<td>' +this["designation"]+ '</td>';
        txt += '<td>' +this["company"]+ '</td>';
        txt += '<td>' +this["experience"]+ '</td>';
        });//end each
        txt += '</tr></table>';
 $("#results").append(txt);
    });//end json
});
$(文档).ready(函数(){
$.getJSON(“/search”),函数(数据){
//var txt1='您有'+数据[“总计数”]+'活动';
//$(“#通知”).html(txt1);
var-txt='';
$。每个(数据、函数(键、值){
txt+='';
txt+=''+此[“id”]+'';
txt+=''+此[“第一”]+'';
txt+=''+此[“最后一个”]+'';
txt+=''+此[“名称”]+'';
txt+=''+本[“公司”]+'';
txt+=''+此[“体验”]+'';
})//结束每一个
txt+='';
$(“#结果”).append(txt);
});//结束json
});
此[“变量”]
不起作用

感谢大家的帮助。

你们是说这个吗

更新

$(document).ready(function(){
$.getJSON("/search", function(data) {
var item = data[3][1].hits[0]._source;
    var txt  = '<table><tr>';
        txt += '<tr><td><a href="#" class="a"  id="' +item["id"]+ '">' +item["name"]+ '</a></td>';
        txt += '<td>' +item["id"]+ '</td>';
        txt += '<td>' +item["first"]+ '</td>';
        txt += '<td>' +item["last"]+ '</td>';
        txt += '<td>' +item["designation"]+ '</td>';
        txt += '<td>' +item["company"]+ '</td>';
        txt += '<td>' +item["experience"]+ '</td>';
        txt += '</tr></table>';
 $("#results").append(txt);
    });//end json
});
$(文档).ready(函数(){
$.getJSON(“/search”),函数(数据){
变量项=数据[3][1]。点击[0]。\u来源;
var-txt='';
txt+='';
txt+=''+项[“id”]+'';
txt+=''+项[“第一”]+'';
txt+=''+项目[“最后”]+'';
txt+=''+项目[“名称”]+'';
txt+=''+项目[“公司”]+'';
txt+=''+项目[“体验”]+'';
txt+='';
$(“#结果”).append(txt);
});//结束json
});
您应该尝试以下方法:

 var txt  = '<table><tr>';
 $.each( data, function( key, value ) {
    if(key == 3)
    {
     txt += '<td>' + value[1].hits[0]._source.designation + '</td>';   
     txt += '<td>' + value[1].hits[0]._source.city + '</td>'; 
    }
});
 txt += '</tr></table>';
 $("#results").append(txt);
var-txt='';
$。每个(数据、函数(键、值){
如果(键==3)
{
txt+=''+值[1]。点击[0]。\u source.designation+'';
txt+=''+值[1]。点击[0]。\u source.city+'';
}
});
txt+='';
$(“#结果”).append(txt);

示例fiddle:

结果
是数组的数组,而不是对象的数组。在到达具有
id
first
等字段的对象之前,必须向下钻取几个级别。不确定!我只是想知道如何访问“designation”和“city”是的,在控制台中可以正常工作,但如何在HTML中复制它?谢谢。删除每个循环,而不是使用
xxx
使用
data
对不起,我到了。不知道你的意思。我希望能够做到txt=this[某物,某物。“city”]我如何导航各个级别以达到这个目标?我感谢你们的耐心和帮助。学者和绅士,谢谢你们。这正是我所要寻找的,因为我现在可以从中概括,以访问thiscarray的其他元素,以及其他元素。非常感谢。这是可行的,但是如果没有console.log,我怎么能像在上面的jquery中那样做呢?非常感谢!罗伯特,谢谢你。不同的方法,稍微从上面,但再次正是我需要的。我非常感谢这一经济而优雅的片段。
 var txt  = '<table><tr>';
 $.each( data, function( key, value ) {
    if(key == 3)
    {
     txt += '<td>' + value[1].hits[0]._source.designation + '</td>';   
     txt += '<td>' + value[1].hits[0]._source.city + '</td>'; 
    }
});
 txt += '</tr></table>';
 $("#results").append(txt);