Javascript 如何访问json字典和列表中的值

Javascript 如何访问json字典和列表中的值,javascript,jquery,json,Javascript,Jquery,Json,我面临一个小问题。我不得不将搜索引擎中的数据添加到网页中。有人能指导我如何从字典中的列表中访问数据吗。例如 我编写以下代码以在控制台和网页中显示结果 data = JSON.parse(result); for (var item in data['data']['hits']['hits']) { console.log(data); $('.class name').each(function(){ $(this).append(data); })

我面临一个小问题。我不得不将搜索引擎中的数据添加到网页中。有人能指导我如何从字典中的列表中访问数据吗。例如

我编写以下代码以在控制台和网页中显示结果

data = JSON.parse(result);

for (var item in data['data']['hits']['hits']) {
    console.log(data);
    $('.class name').each(function(){ 
        $(this).append(data);
    });
}
我必须访问名称和用户名。我写了上面的代码,但它只在网页上显示对象,在控制台中,我可以从对象访问名称和用户名,但在网页中,我不知道如何做到这一点

JSON格式如下

{
    "data": {
      "hits": {
        "hits": [{
            "_score": 1.8235999,
            "_type": "xray",
            "_id": "1234",
            "_source": {
              "user_name": "kamil",
              "name": "ahmed"
            },
            "_index": "mri",
            .....
          ]
        }
      }
    }

我的问题是如何从这个JSON格式中访问名称和用户名,以便将它们附加到网页上。

您可以尝试一下这样的方法:

data = JSON.parse(result);

var hit = data['data']['hits']['hits'][0];
if(hit){
    var source = hit["_source"];
    if(source){
        var user_name = source["user_name"];
        var name = source["name"]; 
    }
}
基于此,您可以应用于整个阵列

function getSourceProps(source) {
    if(source){
        return {
            usernname: source["user_name"],
            name: source["name"]
        };
    }
    return {};
}

data = JSON.parse(result);

var hits = data['data']['hits']['hits'];
// You could simply use a for. The for...in structure is used for other purposes.
for (var i=0; i<hits.length; i++) {
    // I can't understand why you make this selection. So I left it.
    $('.class name').each(function(){ 
        var props = getSourceProps(hits["source"]);
        if(props.length){
           $(this).append(props.username+" "+props.name);
        }
    });
}
您正在附加作为根对象的数据,而不是附加项

比如说

data = JSON.parse(result);
var list = data['data']['hits']['hits'];
for (var item in list) {
    console.log(data);
    $('.class name').each(function(){ 
        $(this).append(item['_score']);//or any other property in the object inside list
    });
}

我举了一个小例子,也许这有帮助:

风险值数据={ 数据:{ 点击次数:{ 点击次数:[{ _得分:1.8235999, _类型:X射线, _身份证号码:1234, _资料来源:{ 用户名:kamil, 姓名:艾哈迈德 }, _指标:mri },{ _得分:1.8235999, _类型:X射线, _身份证号码:1234, _资料来源:{ 用户名:username2, 姓名:你好 }, _指标:mri },{ _得分:1.8235999, _类型:X射线, _身份证号码:1234, _资料来源:{ 用户名:用户名3, 姓名:asdf }, _指标:mri }] } } }; 对于data.data.hits.hits中的var hit{ var hit=data.data.hits.hits[hit]; var源=命中。\ u源; var指数=命中指数; var id=命中。\u id; $'div'.appendsource.user_name+'-'+source.name+; }
json格式错误。您的json结构是动态的吗?格式没有错误。实际上,我从弹性搜索中得到这些结果,并在控制台中显示它们。但我想显示名称和用户名,在控制台中看起来是这样的。。。。。。。。。。。。。。。。。。数据:对象碎片:对象命中率:对象命中率:数组[1]0:Object\u id:1234\u索引:mri\u来源:对象名称:ahmed用户名:kamil。我想访问的名称和用户名只从这个投票下来的评论格式是正确的。json中的数组格式错误。@MamdouhFleelancer是该结构是动态的。投票否决未知选择器$'.class name'。Html没有tag@T-nNguỹn他有一个评论,我不明白你为什么做出这个选择。所以我离开了it@T这是邮报的一部分。这不是一个错误。显然,没有人会将类作为类属性的值。因此,我要给出另一个原因:data['data']['hits']['hits'][0]不是数组。您的代码无法编译。@t–nNguỹn您有确切的json吗?OP说是这样的。我所有的推理都是基于OP帖子。我不能想当然地认为这是事实。显然,有很多事情对我来说没有意义,但我不得不把我的怀疑限制在OP帖子上。此外,如果你注意到hits中包含的hits,我刚才提到的一个奇怪的东西,有一个以括号开头的值。如果我没有错的话,这是我们在JavaScript中定义数组的方法之一——最常见的方法。这不对吗?一件小事。如何从上面的示例中访问\u id和\u索引。塔克斯guiding@kamilahmed与访问源代码相同。我用索引和id变量更新了我的示例。非常感谢。你真的救了我一天。我需要最后一个建议,然后我希望我完成这项任务。我有600个搜索结果,页面只显示前30个搜索结果。我必须应用分页。我应该单独问这个问题吗?因为我花了3天的时间在分页上,但我没有明确的方向。我必须对相同的结果和代码应用分页。@kamilahmed是的,这应该是一个新问题。