如何将含columns和rows字段的CSV结构JSON转换为实际CSV数据
JSON转CSV实现方案
通用处理逻辑
- 第一步:提取JSON中
columns数组下所有name字段的值,拼接成CSV的表头行,字段之间用半角逗号分隔 - 第二步:遍历JSON中
rows数组的每一行数据,将每行的数组元素按顺序拼接成数据行,同样用半角逗号分隔 - 第三步:处理特殊字符转义:如果单元格内容包含半角逗号、双引号、换行符,需要给整个单元格内容包裹双引号,同时内容中原有的双引号要替换为两个连续的双引号
- 第四步:所有行拼接完成后就是标准CSV格式,可直接保存为
.csv后缀文件
示例实现(Python)
不需要额外安装第三方库,用Python内置的csv模块即可自动处理转义逻辑,代码如下:
import csv import json # 输入的JSON字符串,也可以从本地文件读取 json_str = ''' { "columns": [ {"name": "ColumnName1", "type": "Number"}, {"name": "ColumnName2", "type": "String"}, {"name": "ColumnName3", "type": "String"} ], "rows": [ [11111, "ResourceType1", "String1"], [22222, "ResourceType2", "String2"], [33333, "ResourceType3", "String3"] ] } ''' # 解析JSON数据 data = json.loads(json_str) # 提取表头列表 headers = [col["name"] for col in data["columns"]] # 写入CSV文件 with open("output.csv", "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) # 写入表头 writer.writerow(headers) # 批量写入所有行数据 writer.writerows(data["rows"])
转换后输出效果
运行上述代码得到的output.csv内容如下:
ColumnName1,ColumnName2,ColumnName3 11111,ResourceType1,String1 22222,ResourceType2,String2 33333,ResourceType3,String3
注意:如果需要适配Excel打开不乱码,可以将文件编码设置为
utf-8-sig,即可避免中文乱码问题。
内容的提问来源于stack exchange,提问作者mklement0
相关产品推荐
相关产品推荐

