Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问JSON数组中的元素_Javascript_Arrays_Json_Api - Fatal编程技术网

Javascript 访问JSON数组中的元素

Javascript 访问JSON数组中的元素,javascript,arrays,json,api,Javascript,Arrays,Json,Api,我正在用Javascript制作一个API来获取一些细节 调用以下命令:APICall.Employee.getAll() 返回: 我正在尝试访问每个员工ID。当我测试调用时,我得到错误:“ReferenceError:未定义员工” var json=APICall.Employee.getAll(); 打印(“员工:+json”);//返回[对象数组]…[对象数组] for(i=0;i

我正在用Javascript制作一个API来获取一些细节

调用以下命令:
APICall.Employee.getAll()
返回:

我正在尝试访问每个员工ID。当我测试调用时,我得到错误:“ReferenceError:未定义员工”

var json=APICall.Employee.getAll();
打印(“员工:+json”);//返回[对象数组]…[对象数组]
for(i=0;i

我做错了什么?如何访问员工ID?

您没有引用JSON键“employees”,for循环也没有做任何事情

您需要执行以下操作:

var employees = json.employees;
然后在该对象上迭代:

for (var i = 0; i < employees.length; i++) {
    print("ID: " + employees[i].id);
};
for(var i=0;i

希望这会有所帮助。

首先,您使用的是json的长度,这是不存在的。第二,你从来不用索引i。这是一个固定版本

var json = APICall.Employee.getAll();
print("Employees: " + json); // Returns [object Array]...[object Array]
for (i = 0; i < json.employees.length; i++) {
    print("ID: " + json.employees[i].id); // ReferenceError: employees is not defined
}
var json=APICall.Employee.getAll();
打印(“员工:+json”);//返回[对象数组]…[对象数组]
对于(i=0;i
您会注意到,我现在查找employees数组的长度。我还通过执行json.employees[I]在循环中索引到该数组中

更新:要使用新代码:

var json = APICall.Employee.getAll();
for (i = 0; i < json.length; i++) {
    print("ID: " + json[i].id);
}
var json=APICall.Employee.getAll();
for(i=0;i
var json=APICall.Employee.getAll();
打印(“员工:+json”);//返回[对象数组]…[对象数组]
对于(i=0;i
那么,“员工”的定义在哪里?您正在基于json.length进行循环,但试图从名为“employees”的变量打印?这就是为什么它没有定义告诉你员工的原因。试试
json.employees.id
@mstorkson我认为
APICall.employeen.getAll()
正在返回一个与引用示例形状相同的对象数组。也尝试了此操作,但出现错误:“无法读取未定义的@heyred do print(JSON.stringify(JSON,null,2))的属性'first_name',并将输出添加到问题中。让我们至少确保您的API调用返回的是您认为应该返回的内容,即
APICall.Employee.getAll()
返回一个与引用示例形状相同的对象数组。问题是“返回给我的JSON数组与下面的完全相同”。我认为status、tag、employee等都是返回的json的键,我认为
APICall.employee.getAll()
返回的对象数组的形状与引用的示例相同。@JDB是什么让您这么认为的?示例中的对象确实包含员工列表,因此是GetAll()的适当返回类型。这也解释了他的错误。当我尝试这里的答案时,我得到了错误:“无法读取未定义的属性‘length’”,我假设这是因为OP在读取json.length时没有得到错误。如果该属性未定义,那么代码将永远不会进入for循环,也永远不会执行可能引发错误的代码
返回一个与引用示例形状相同的对象数组。然后先更改json结构,然后提问。这不是我的问题。但是是的。。。我同意。。。最好问一个好问题,这样人们就不会把时间浪费在回答错误的问题上。
var json = APICall.Employee.getAll();
print("Employees: " + json); // Returns [object Array]...[object Array]
for (i = 0; i < json.employees.length; i++) {
    print("ID: " + json.employees[i].id); // ReferenceError: employees is not defined
}
var json = APICall.Employee.getAll();
for (i = 0; i < json.length; i++) {
    print("ID: " + json[i].id);
}
var json = APICall.Employee.getAll();
print("Employees: " + json); // Returns [object Array]...[object Array]
for (i = 0; i < json.employees.length; i++) {
    print("ID: " + json.employees[i].id); // ReferenceError: employees is not defined
}