【问题标题】:How do I loop JSON response to get specific data in Javascript or GAS如何循环 JSON 响应以获取 Javascript 或 GAS 中的特定数据
【发布时间】:2020-01-21 10:31:17
【问题描述】:

我收到来自外部 API 的 JSON 响应。问题是我只知道如何记录响应而不是操纵它。在这种情况下,我需要从响应中获取一些信息并遍历整个响应以显示所有用户的列表。到目前为止,这是我的代码。它不是一个好的,但这是我可以用我最小的 javascript 技能做的。

 };

var response= UrlFetchApp.fetch(url, options)
var call= JSON.parse(response.getContentText());
var people=call.data;
  var user= {}

    user.ID = call.data[1].id;
    user.Email = call.data[1].email;
    user.Name= call.data[1].display_name;

Logger.log(user)

} 

示例响应:

"data": [
    {
        "id":00126,
        "first_name": "Test",
        "last_name": "Test",
        "archived": false,
        "display_name": "Test Test",
        "email": "test@test.com",
        "termination_date": null,
        "mobile_phone": null,
        "office_phone": null,
        "deleted_at": null,
        "deleted": false,

    },

"data": [
    {
        "id":00126,
        "first_name": "Test",
        "last_name": "Test",
        "archived": false,
        "display_name": "Test Test",
        "email": "test@test.com",
        "termination_date": null,
        "mobile_phone": null,
        "office_phone": null,
        "deleted_at": null,
        "deleted": false,

    },

【问题讨论】:

  • 如果您向我们展示响应样本和您的预期结果,可能会更简单!
  • 你的代码行好像搞混了,把它们重新排序会更好地让我们了解你在做什么!
  • 看来for(i = 0; i = < people.user ;i++) {应该改成for(i = 0; i = < people.length ;i++) {
  • @sjahan 我已经编辑了我的问题。请查看示例响应

标签: javascript arrays loops for-loop google-apps-script


【解决方案1】:

您可以使用Array.prototype.map 来遍历数据并仅从对象返回所需的信息

let data =  [
	{
		"id": 00126,
		"first_name": "Test",
		"last_name": "Test",
		"archived": false,
		"display_name": "Test Test",
		"email": "test@test.com",
		"termination_date": null,
		"mobile_phone": null,
		"office_phone": null,
		"deleted_at": null,
		"deleted": false,

	}]

	let res = data.map(({id, email, display_name}) => ({ID: id, Email: email, Name: display_name}));
	console.log(res)

如果不支持 ES6

var res = data.map(function(userData) {
        return {ID: userData.id, Email: userData.email, Name: userData.display_name}
    });

【讨论】:

  • 请注意,如果他/她使用 GAS,用户可能无法使用 let 和箭头函数等 ES6 工具。
  • @iamblichus 添加了没有这两个的示例。
猜你喜欢
  • 1970-01-01
  • 2016-01-25
  • 2018-04-15
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多