如何将Oracle Service Cloud Right Now API导出的JSON报表转为CSV表格?
将Oracle Service Cloud Right Now API导出的JSON转换为CSV表格
导出的JSON格式示例
{ "count": 2, "name": "filename", "columnNames": [ "Name1", "Name2", "Name3", "Name4", "Name5" ], "rows": [ [ "ValueColumn1Row1", "ValueColumn2Row1", "ValueColumn3Row1", "ValueColumn4Row1", "ValueColumn5Row1" ], [ "ValueColumn1Row2", "ValueColumn2Row2", "ValueColumn3Row2", "ValueColumn4Row2", "ValueColumn5Row2" ] ], "links": [ { "rel": "self", "href": "https://somecompany.custhelp.com/services/rest/connect/v1.4/analyticsReportResults" } ] }
目标CSV表格格式
| Name1 | Name2 | Name3 | Name4 | Name5 |
|---|---|---|---|---|
| ValueColumn1Row1 | ValueColumn2Row1 | ValueColumn3Row1 | ValueColumn4Row1 | ValueColumn5Row1 |
| ValueColumn1Row2 | ValueColumn2Row2 | ValueColumn3Row2 | ValueColumn4Row2 | ValueColumn5Row2 |
试过Power Query和多款在线转换器,都无法正确识别columnNames作为表头并匹配rows数据,以下是两种简单的实现方法:
方法1:Python极简脚本(零编程基础也能操作)
步骤:
- 下载安装Python(安装时勾选「Add Python to PATH」选项)
- 新建一个文本文件,复制以下代码进去,保存为
json_to_csv.py - 将你的JSON文件重命名为
input.json,和脚本放在同一个文件夹里 - 双击运行脚本,自动生成
output.csv文件
脚本代码:
import json import csv # 读取JSON文件 with open('input.json', 'r', encoding='utf-8') as f: data = json.load(f) # 提取表头和数据行 headers = data['columnNames'] rows = data['rows'] # 写入CSV文件 with open('output.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(headers) # 写入表头 writer.writerows(rows) # 写入所有数据行
方法2:Excel VBA(适合熟悉Excel的用户)
步骤:
- 打开Excel,按
Alt+F11打开VBA编辑器 - 点击「插入」→「模块」,复制以下代码到模块中
- 将JSON内容粘贴到Sheet1的A1单元格(或修改代码中读取文件的路径)
- 运行宏,转换后的表格会自动生成在Sheet2中
VBA代码:
Sub JSONToCSV() Dim jsonStr As String Dim jsonObj As Object Dim headers As Variant Dim rows As Variant Dim i As Integer, j As Integer ' 从Sheet1的A1单元格读取JSON内容 jsonStr = Sheet1.Range("A1").Value ' 解析JSON对象 Set jsonObj = CreateObject("Scripting.Dictionary") Set jsonObj = JsonConverter.ParseJson(jsonStr) ' 获取表头和数据行 headers = jsonObj("columnNames") rows = jsonObj("rows") ' 清空Sheet2并写入数据 Sheet2.Cells.Clear ' 写入表头 For i = LBound(headers) To UBound(headers) Sheet2.Cells(1, i + 1).Value = headers(i) Next i ' 写入数据行 For i = LBound(rows) To UBound(rows) For j = LBound(rows(i)) To UBound(rows(i)) Sheet2.Cells(i + 2, j + 1).Value = rows(i)(j) Next j Next i End Sub
注意:使用此方法需要先安装
JsonConverter模块,可通过VBA编辑器的「工具」→「引用」添加,或直接导入对应的模块文件。
内容的提问来源于stack exchange,提问作者Grote
相关产品推荐
相关产品推荐

