Javascript JSON只返回一个对象
我在Domo工作,从API中提取用户。我正试图拉所有用户,并在网站自定义字段中添加条目。到目前为止,它只吸引了一个用户。此外,在obj2日志中,它只返回一个对象。因为它没有返回所有的对象,所以它永远不会得到ID 4,这是Department。它只输出ID 11,这是我们使用并停止的ID类型 我觉得我很接近了…有什么需要修正的指针吗 我对JavaScript非常陌生,请善待我Javascript JSON只返回一个对象,javascript,json,Javascript,Json,我在Domo工作,从API中提取用户。我正试图拉所有用户,并在网站自定义字段中添加条目。到目前为止,它只吸引了一个用户。此外,在obj2日志中,它只返回一个对象。因为它没有返回所有的对象,所以它永远不会得到ID 4,这是Department。它只输出ID 11,这是我们使用并停止的ID类型 我觉得我很接近了…有什么需要修正的指针吗 我对JavaScript非常陌生,请善待我 if(metadata.report == 'User'){ DOMO.log('metadata.reportname:
if(metadata.report == 'User'){
DOMO.log('metadata.reportname: ' + metadata.report);
var base_url = 'https://app.com/api/author/users/';
var res = httprequest.get(base_url);
//DOMO.log('res: ' + res);
var raw = JSON.parse(res);
datagrid.addColumn('id', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('hris_id', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('full_name', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('first_name', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('last_name', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('department', datagrid.DATA_TYPE_STRING);
var users = raw.users;
//DOMO.log('users: ' + JSON.stringify(users));
for(var i = 0; i < users.length; i++){
var obj = users[i];
}
//make new specific request with includes
var temp = obj.id;
var temp2 = '?includes[]=custom_fields';
var uniq_url = base_url.concat(temp.concat(temp2));
//DOMO.log(uniq_url);
var res2 = httprequest.get(uniq_url);
var raw2 = JSON.parse(res2);
//DOMO.log((raw2));
var linked = raw2.linked;
var cf = linked.custom_fields;
var cfv = linked.custom_field_values;
for(var g = 0; g < cfv.length; j++){
var obj2 = cfv[g];
DOMO.log(obj2.value);
}
if (obj2.custom_fields.id == 4){
DOMO.log("Department is: " + obj2.value);
}
//if (obj2.links.custom_field.id == 5){
//DOMO.log('Position is ' + obj2.value);
//DOMO.log('JSON ' + res);
//DOMO.log('id: ' + obj.id);
datagrid.addCell(obj.id);
//DOMO.log('hris_id: ' + obj.hris_id);
datagrid.addCell(obj.hris_id);
//DOMO.log('full_name: ' + obj.hris_id);
datagrid.addCell(obj.full_name);
//DOMO.log('first_name: ' + obj.first_name);
datagrid.addCell(obj.first_name);
//DOMO.log('last_name: ' + obj.last_name)
datagrid.addCell(obj.last_name);
//DOMO.log('value: ' + obj.value);
datagrid.addCell(obj.value);
datagrid.endRow();
}
//Console Log;
metadata.reportname: User
https://app.com/api/author/users/976?includes[]=custom_fields
{"id":"3785","value":"12870","links":{"custom_field":{"id":"11","type":"custom_fields"}}}
if(metadata.report=='User'){
log('metadata.reportname:'+metadata.report);
var base_url='1〕https://app.com/api/author/users/';
var res=httprequest.get(基本url);
//DOMO.log('res:'+res);
var raw=JSON.parse(res);
datagrid.addColumn('id',datagrid.DATA\u类型\u字符串);
datagrid.addColumn('hris_id',datagrid.DATA_TYPE_STRING);
datagrid.addColumn('full_name',datagrid.DATA_TYPE_STRING');
datagrid.addColumn('first\u name',datagrid.DATA\u TYPE\u STRING);
datagrid.addColumn('last_name',datagrid.DATA_TYPE_STRING);
datagrid.addColumn('department',datagrid.DATA\u TYPE\u STRING);
var用户=原始用户;
//log('users:'+JSON.stringify(users));
对于(var i=0;i
问题在于for循环:
for(var i = 0; i < users.length; i++){
var obj = users[i];
}
for(var i=0;i
您正在迭代所有用户,但始终使用当前[i]用户
我猜您的意思是括号将包围整个代码:
像这样:
var users = raw.users;
//DOMO.log('users: ' + JSON.stringify(users));
for (var i = 0; i < users.length; i++) {
var obj = users[i];
//make new specific request with includes
var temp = obj.id;
var temp2 = '?includes[]=custom_fields';
var uniq_url = base_url.concat(temp.concat(temp2));
//DOMO.log(uniq_url);
var res2 = httprequest.get(uniq_url);
var raw2 = JSON.parse(res2);
//DOMO.log((raw2));
var linked = raw2.linked;
var cf = linked.custom_fields;
var cfv = linked.custom_field_values;
for (var g = 0; g < cfv.length; j++) {
var obj2 = cfv[g];
DOMO.log(obj2.value);
}
if (obj2.custom_fields.id == 4) {
DOMO.log("Department is: " + obj2.value);
}
}
var users=raw.users;
//log('users:'+JSON.stringify(users));
对于(var i=0;i
编辑:
在您的额外输入之后,我在下一个for循环中看到了另一个错误-相同的问题,您正在迭代它,但最终获得了一个值(最后一个),这是一个错误,因为没有定义j,因为您使用的是g
固定代码:
if (metadata.report == 'User') {
DOMO.log('metadata.reportname: ' + metadata.report);
var base_url = 'https://app.com/api/author/users/';
var res = httprequest.get(base_url);
//DOMO.log('res: ' + res);
var raw = JSON.parse(res);
datagrid.addColumn('id', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('hris_id', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('full_name', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('first_name', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('last_name', datagrid.DATA_TYPE_STRING);
datagrid.addColumn('department', datagrid.DATA_TYPE_STRING);
var users = raw.users;
//DOMO.log('users: ' + JSON.stringify(users));
for (var i = 0; i < users.length; i++) {
var obj = users[i];
//Move brackets to end
//make new specific request with includes
var temp = obj.id;
var temp2 = '?includes[]=custom_fields';
var uniq_url = base_url.concat(temp.concat(temp2));
//DOMO.log(uniq_url);
var res2 = httprequest.get(uniq_url);
var raw2 = JSON.parse(res2);
//DOMO.log((raw2));
var linked = raw2.linked;
var cf = linked.custom_fields;
var cfv = linked.custom_field_values;
//for (var g = 0; g < cfv.length; j++) { --> g++ instead of j++
for (var g = 0; g < cfv.length; g++) {
var obj2 = cfv[g];
DOMO.log(obj2.value);
//Move bracket to after using obj2
//Added more conditions:
if (obj2.custom_fields.id == 4 || obj2.custom_fields.id==5 || obj2.someOtherProp=="Something") {
DOMO.log("Department is: " + obj2.value);
//DOMO.log('JSON ' + res);
//DOMO.log('id: ' + obj.id);
datagrid.addCell(obj.id);
//DOMO.log('hris_id: ' + obj.hris_id);
datagrid.addCell(obj.hris_id);
//DOMO.log('full_name: ' + obj.hris_id);
datagrid.addCell(obj.full_name);
//DOMO.log('first_name: ' + obj.first_name);
datagrid.addCell(obj.first_name);
//DOMO.log('last_name: ' + obj.last_name)
datagrid.addCell(obj.last_name);
//DOMO.log('value: ' + obj.value);
datagrid.addCell(obj.value);
datagrid.endRow();
}
}
//if (obj2.links.custom_field.id == 5){
//DOMO.log('Position is ' + obj2.value);
//Moved this code inside the if id==4.
}
}
if(metadata.report=='User'){
log('metadata.reportname:'+metadata.report);
var base_url='1〕https://app.com/api/author/users/';
var res=httprequest.get(基本url);
//DOMO.log('res:'+res);
var raw=JSON.parse(res);
datagrid.addColumn('id',datagrid.DATA\u类型\u字符串);
datagrid.addColumn('hris_id',datagrid.DATA_TYPE_STRING);
datagrid.addColumn('full_name',datagrid.DATA_TYPE_STRING');
datagrid.addColumn('first\u name',datagrid.DATA\u TYPE\u STRING);
datagrid.addColumn('last_name',datagrid.DATA_TYPE_STRING);
datagrid.addColumn('department',datagrid.DATA\u TYPE\u STRING);
var用户=原始用户;
//log('users:'+JSON.stringify(users));
对于(var i=0;ig++而不是j++
对于(var g=0;g