我正在尝试从 Json 响应访问子数据,以便在 if 语句中使用它,但我不知道如何操作。有人知道该怎么做吗?
这是响应的屏幕截图,我圈出了我想要访问的对象。我只希望当批准具有值时才进行求和,即 状态 需要等待或批准,否则,不会进行任何计算。
这是我使用的代码,但不知道如何访问 JSON 格式的approaval={data=[{status}]以便使用它
function showTimeData() {
var users = getUsers()
var endpoint = 'users/';
var time_array = [];
for (var i = 0; i < users.length; i++) {
var url = 'https://api.10000ft.com/api/v1/users/' + users[i].id + '/time_entries?fields=approvals' + '&from=' + from + '&to=' + to + '&auth=' + TKF_AUTH;
var response = UrlFetchApp.fetch(url, options);
var info = JSON.parse(response.getContentText());
var content = info.data;
var total_hours = 0;
for (var j = 0; j < content.length; j++) {
if (content.data.approvals.data.length > 0) {
hoursTotal = 0;
}
total_hours += parseInt(content[j].hours);
}
Logger.log('User name: ' + users[i].display_name + ' ' + 'User id: ' + users[i].id + ' ' + 'total hours: ' + total_hours)
}
最佳答案
首先。您需要修复错误(在评论中的聊天中提到): 替换这个
if (content.data.approvals.data.length > 0) {
hoursTotal = 0;
}
有了这个
if (content[j].approvals.data.length > 0) {
hoursTotal = 0;
}
<小时/>
那么你需要的是:
content[0].approvals.data[0].status
或状态
数组:
content[0].approvals.data.map(el => el.status)
或所有状态
的数组:
content.map(el => el.approvals.data.map(it => it.status)).flat(1)
但最后一个示例仅适用于相当新的浏览器。
关于javascript - 如何使用 Javascript/GAS 访问 JSON 响应中的 child 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59917235/