【问题标题】:how to transform json data into table如何将json数据转换成表格
【发布时间】:2019-04-17 15:07:55
【问题描述】:

我有以下以 JSON 格式返回数据的 api 调用:

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 但我无法将其转换为表格?

谁能建议如何将返回的数据格式化为表格或在原始调用中使用什么代码来帮助解决这个问题?

理想的最终产品如下,但不知道如何实现?

谢谢。

【问题讨论】:

  • 你是什么意思将这个移到excel中...你的意思是生成一个csv或xslx文件?你是什​​么意思转换成表格?您的意思是在标记中使用您的数据显示一个表格?
  • 您需要解析(开发解析器)json并将其转换为csv格式,例如以便将其导入excel。如果您想手动进行转换,您可以使用此在线服务sqlify.io/convert/json/to/csv
  • 您的源数据是一个数组,它只包含一个元素(另一个)对象数组。这是正确的吗?
  • 如果您需要重复执行该任务,您可以查看 jQuery DataTables 插件。它可以轻松地将您的 JSON 呈现为 HTML 表格,并提供导出到 Excel/CSV 的功能。
  • Excel 中的 PowerQuery 将直接执行此操作。见json to excel using power query

标签: javascript json excel parsing etl


【解决方案1】:

这会将您的数据解析为逗号分隔的字符串 (CSV)。

您只需要用逗号, 分隔每个行元素,并用换行符\n 分隔每一行。 Excel 知道这种格式,但有时您可能需要使用 text to columns 函数让它知道数据是逗号分隔的。

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 中打开得到这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    相关资源
    最近更新 更多