Как вытащить вложенный объект из массива с помощью API-запроса, возвращенного json? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть API, который я вызываю для возврата запроса. Формат этого запроса нельзя изменить, чтобы им было легче манипулировать. В нем есть вложенный массив, который мне нужно связать с данными более высоких уровней.

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

    const axios = require('axios')



const body = {
    query: ` query {boards(ids:307027197) {name, items {name id column_values(ids:lockbox_) {title id value text}}}} `,
  }
console.log("Requesting Query....");


function getApi (callback){
    setTimeout(function() {axios.post(`https://api.monday.com/v2`, body, {
        headers: {
            MY_API_KEY_DATA
          },
      })
      .catch(err => {
        console.error(err.data)
      })
      .then(res => {
          var queried = res
          var array = queried.data.data.boards[0].items
                  //console.log(queried)
                  //console.log(array)
             console.log(array.length)
                  //console.log("Total Items:", array.length)
          var i;
          for (i = 0; i < array.length; i++){

            callback(queried.data.data.boards[0].items)

          //callback([(queried.data.data.boards[0].items[i].column_values[0])])

        }
    }, 0);
})
};
getApi(callback => {
    console.log(callback)

            //console.log(parsed)
                //output for above
                //{"name":"address","id":"1234","column_values": 
                //[{"title":"Lockbox#","id":"lockbox_","value":"\"31368720\"","text":"31368720"}]}

            //console.log(JSON.parse(parsed))
             //output for above
            //[
            //       {
            //           name: 'address',
            //           id: '353428429',
            //           column_values: [ [Object] ]
            //       }
            //]
});
setTimeout(function() {
console.log("Query Returned")},1000);

1 Ответ

0 голосов
/ 25 октября 2019

Исходя из ваших данных, column_values ​​представляет собой массив с объектами в нем. Для массива вам нужно получить к нему доступ с помощью ключа. Для вашего случая, если ваши данные имеют вид var data = {"name": "address", "id": "1234", "column_values": [{"title": "Lockbox #", "id": "lockbox_"," value ":" \ "31368720 \" "," text ":" 31368720 "}]}

Вы можете получить доступ к id column_values ​​как data.column_values ​​[0] .id

...