Как l oop через JSON ответ в Javascript, чтобы получить указанные c данные - PullRequest
0 голосов
/ 20 января 2020

Я учусь делать запросы API с использованием Javascript.

Я сделал запрос GET и получил следующие данные, и я хотел бы через них l oop, чтобы получить только id , display_name и email . Это должно храниться в массивах. Как мне заполнить код javascript?

"data": [
        {
            "id": 222226,
            "display_name": "jane Doe",
            "email": "janeDoe@testmail.com",
        },
        {
            "id": 1111226,
            "display_name": "james",
            "email": "james@testmail.com",
        },
    {
            "id": 11126,
            "display_name": "Travis Mc",
            "email": "travis@testmail.com",
         },

Вот мой код javascript.

var options = {
        method: 'get',
        headers: {
            Authorization: 'Bearer ' + auth
        }
    };
    var response= UrlFetchApp.fetch(url, options);
    var data = JSON.parse(response.getContentText());

Я не уверен, что делаю эту часть l oop правильно .

for (var i = 0; i < data.length; i++) {
    Logger.log(data[i].display_name);
}

enter image description here

1 Ответ

1 голос
/ 20 января 2020

Я предполагаю, что вы используете Fetch Api . Если это так, это означает, что вы создаете Обещание. При работе с обещаниями вам нужно будет связать функцию , а затем , чтобы установить sh, как действовать. Promise.then((value)=>{ /* do something */ }); Поскольку вы работаете с JSON данными, вы должны сначала проанализировать их, прежде чем они станут управляемыми для javascript. Если вы читаете Fetch Api, он объясняет, как он разрешает ваше обещание и возвращает Ответ на основе HTTP-ответа .

Этот пример заимствован из Devloper Mozilla Org Ознакомьтесь с разделом использования API Fetch

fetch('http://example.com/movies.json')
  .then((response) => {
    return response.json();
  })
  .then((myJson) => {
    console.log(myJson);
  });

В этих примерах показано, как функция извлечения разрешает обещание, которое возвращает ответ, который был разобран , затем снова возвращен другой функции , а затем , которая теперь будет иметь обработанные данные, готовые к манипулированию.

В вашем случае код будет выглядеть как-то как это

var options = {
    method: 'get',
    headers: {
        Authorization: 'Bearer ' + auth
    }
};

var response = UrlFetchApp.fetch(url, options)
.then((r)=>{ return r.json(); }).then((data)=>{
  for (let i = 0; i < data.length; i++) {
    Logger.log(data[i].display_name);
  }
});
...