使用jQuery在JSON文件上循环

使用jQuery在JSON文件上循环,jquery,json,Jquery,Json,我试图循环使用这个JSON字符串(它位于一个名为language.JSON的单独JSON文件中),但没有任何效果 { "language": [ { "name": "English Languages", "values": ["English 1", "English 2", "English 3", "English 4"] }, { "name": "French Languages", "v

我试图循环使用这个JSON字符串(它位于一个名为language.JSON的单独JSON文件中),但没有任何效果

{
    "language": [
    {
        "name": "English Languages",
        "values": ["English 1", "English 2", "English 3", "English 4"]
    },
    {
        "name": "French Languages",
        "values": ["French 1", "French 2", "French 3", "French 4"]
    },
    {
        "name": "Spanish Languages",
        "values": ["Spanish 1", "Spanish 2", "Spanish 3", "Spanish 4"]
    }
    ]}
jQuery

$.getJSON("script/countries.json", function (data) {  
     $.each(data.language, function (i, v) {
     var category = data[i];
     console.log(category.name)
     $.each(category.values, function (i, v){
         console.log(category.values[i])
     });
 });
有人能帮我吗。我想打印Lanugage名称,然后是值列表

输出:

English Language:
English1
English2..
French Language
French1
French2
等等 谢谢

这一行:

var category = data[i];
应该是

var category = data.language[i];

假设调用了
回调
,并且
数据
具有所需的值

data[i]
将返回undefined,因为您正在迭代
data.language
,因此需要使用
var category=data.language[i]
或将当前值作为第二个参数传递给回调。所以你可以

//this will iterate through the data.language list and for each item in the array the callback method will be called. 
//The callback method will receive the index of the current item and the item as its 2 parameters
$.each(data.language, function (i, category) {
    //here category is the current item in the data.language array so it has the name and values properties
    console.log(category.name)
    //the same logic follows here, we are iterating through the values array and since it is an array of string calues the second param lang will be the language
    $.each(category.values, function (i, lang) {
        console.log(lang)
    });
});
考虑以下代码:

$.getJSON("script/countries.json", function (data) {  
     $.each(data.language, function (i, v) {
         var category = v;//updated
         console.log(category.name)
         $.each(category.values, function (i, name){
             console.log(name);//updated
         });
     });
});//missing added

是否正在调用ajax回调。。
数据的记录值是多少请对您发布的内容进行解释,以帮助其他人快速获取。请详细解释您的代码。它可以工作,但我不能完全理解。@user1089173在您的代码中,您使用了
var category=data[I],因此它将转到
var category=data[0]
但是如果查看数据,
数据
对象没有名为
0
的键。实际上,您需要
数据的索引
0
处的值。语言
这就是代码失败的原因完全了解我的代码中的错误。我想逐行解释一下你的代码。此外,当json与代码位于同一个文件中时,它也可以正常工作。我将json放在一个单独的文件中并运行它,它会给我一个意外的令牌错误。为什么?fiddle:在内部声明json时工作正常。但是当在一个单独的文件中时,它会工作,但会出现意外的令牌错误。您可以检查浏览器的“网络”选项卡以查看返回的值吗?