3

I am building a web-app and want to connect data from Quandl through its JSON API. However, the JSON I get from quandl has the column names separate from the data itself, check below:

{
  "datatable": {
    "data": [
      [
        "AAPL",
        "MRY",
        "2020-12-31",
        "2020-09-26",
        "2020-09-26",
        "2021-07-28",
        -406000000,
        323888000000,
        325562500000
]
],

  ]
    ],
    "columns": [
      {
        "name": "ticker",
        "type": "String"
      },
      {
        "name": "dimension",
        "type": "String"
      },
      {
        "name": "calendardate",
        "type": "Date"
      },
      {
        "name": "datekey",
        "type": "Date"
      },
      {
        "name": "reportperiod",
        "type": "Date"
      },
      {
        "name": "lastupdated",
        "type": "Date"
      },
      {
        "name": "accoci",
        "type": "Integer"
      },
      {
        "name": "assets",
        "type": "Integer"
      },
      {
        "name": "assetsavg",
        "type": "Integer"
      }
]
  },
  "meta": {
    "next_cursor_id": null
  }
}

When I use this data in Appsmith, it can not infer the column names. Is there a simple javascript code to combine the column names with the data? Thank you!

sharat87
  • 7,330
  • 12
  • 55
  • 80
Basley
  • 79
  • 12

1 Answers1

10

This is possible with a simple JS snippet, Now my code written is not that great but will work in this case (Can be optimised)

{{ 
  function() {
      let tableData = [];
      _.map(_d.datatable.data, (v, i) => {
        let set = {}
        _.map(v, (x, k) => {
          var obj = {[_d.datatable.columns[k].name]: x}
          set = {...set, ...obj}
        })
        tableData.push(set)
      })
   }()
}}

In the above snippet _d is the data which you receive, We map the array value index with the given column index and create a new object out of it, Also since this is a multiline JS code, In Appsmith we need to write this inside an IIFE like above.

Somangshu Goswami
  • 1,098
  • 11
  • 27