как преобразовать данные JSON в таблицу - PullRequest
1 голос
/ 17 апреля 2019

У меня есть вызов API ниже, который возвращает данные в формате JSON:

https://xama-was-service.herokuapp.com/api/socialone/databoards/10042?1=2019-02-01T00:00:00.000Z&2=test

возвращает данные, как показано ниже:

[
    [
        {
            "Empid": 2326,
            "Empname": "Sam Smith",
            "AbsenceId": 12840,
            "Comment": "a001t000004FQgHAAW",
            "AbsenceStartDate": "2019-05-31T00:00:00.000Z",
            "AbsenceEndDate": "2019-05-31T00:00:00.000Z",
            "JobId": 400004,
            "AbsenceRequestId": ""
        },
        {
            "Empid": 3387,
            "Empname": "Joe bloggs",
            "AbsenceId": 12842,
            "Comment": "a001t000004FK67AAG",
            "AbsenceStartDate": "2019-06-06T00:00:00.000Z",
            "AbsenceEndDate": "2019-06-10T00:00:00.000Z",
            "JobId": 700004,
            "AbsenceRequestId": ""
       }
    ]
]

Я хотел бы переместить это в Excel, а также Power Bi, но я не могу преобразовать его в таблицу?

Кто-нибудь может посоветовать, как отформатировать возвращенные данные в таблицу или какой код использовать при исходном вызове, чтобы помочь с этим?

Идеальный конечный продукт будет таким, как показано ниже, но не знаете, как его достичь?

enter image description here

Спасибо.

1 Ответ

1 голос
/ 17 апреля 2019

При этом ваши данные будут преобразованы в строку с разделителями-запятыми (CSV).

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

const data = [

    [

        {

            "Empid": 2326,

            "Empname": "Sam Smith",

            "AbsenceId": 12840,

            "Comment": "a001t000004FQgHAAW",

            "AbsenceStartDate": "2019-05-31T00:00:00.000Z",

            "AbsenceEndDate": "2019-05-31T00:00:00.000Z",

            "JobId": 400004,

            "AbsenceRequestId": ""

        },

        {

            "Empid": 3387,

            "Empname": "Joe bloggs",

            "AbsenceId": 12842,

            "Comment": "a001t000004FK67AAG",

            "AbsenceStartDate": "2019-06-06T00:00:00.000Z",

            "AbsenceEndDate": "2019-06-10T00:00:00.000Z",

            "JobId": 700004,

            "AbsenceRequestId": ""

       }

    ]

]



window.generateCSV = function () {
  let CSVData = ''
  // set the column names
  for (const value of Object.keys(data[0][0])) {
    CSVData = CSVData.concat(value + ',')
  }
  CSVData = CSVData.slice(0, CSVData.length - 1)
  CSVData = CSVData.concat('\n')
  
  // parse the data
	for (const tbl of data) {
		for (const row of tbl) {
			for (const value of Object.values(row)) {
      	CSVData = CSVData.concat(value + ',')
      }
      CSVData = CSVData.slice(0, CSVData.length - 2)
      CSVData = CSVData.concat('\n')
    }
  }
  document.getElementById("csvdata").innerText = CSVData

}
<input type="button" value="generateCSV" onclick="generateCSV()">

<div id="csvdata">

</div>

После сохранения выходной строки в .txt или .csv через блокнот, я могу открыть в Excel, чтобы получить это.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...