如何使用名称而不是使用jquery的索引从json数组获取数据

时间:2016-10-29 16:51:14

标签: javascript jquery json

我一直在尝试使用jquery使用名称来获取json数据但没有成功,只能使用对象索引,这是我的代码:

var json = [
   {
      "idiom":[
         {
            "nombre":"español",
            "id":1
         },
         {
            "nombre":"ingles",
            "id":2
         }
      ]
   }
];

console.log(json)
$.each( json[0], function( key, data ) {
$.each(data, function(index, indata) {
console.log(indata.nombre);
});
});

console.log('-------');
$.each( json.idiom, function( key, data ) {
$.each(data, function(index, indata) {
console.log(indata.nombre);
});
});

如果我尝试使用 json.idiom 进行访问,而不是 json [0] ,则代码无法正常工作

这是一个小提琴:https://jsfiddle.net/wm0de41h/

2 个答案:

答案 0 :(得分:2)

您必须访问json[0],因为它是一个包含单个项目的数组。如果您想访问json.idiom,则需要将对象重组为:

var json = {
  "idioms":[
    {
       "nombre":"español",
       "id":1
    },
    {
       "nombre":"ingles",
       "id":2
    }
  ]
};

注意现在json对象周围没有方括号。 (我也复数idioms,因为它是一个数组。

最后,你不需要jquery来迭代这个。您可以使用Array.forEach()

json.idiom.forEach(function(idiom) {
    console.log(idiom.nombre);
});

答案 1 :(得分:-3)

使用花括号{}定义JSON对象,而不是括号[]。尝试删除括号,这将留下你:

var json = {
  "idiom":[
     {
        "nombre":"español",
        "id":1
     },
     {
        "nombre":"ingles",
        "id":2
     }
  ]
};

请参阅MDN上的JavaScript对象文档。