JSON 转 CSV/ JSON 数组 → CSV 文件
JSON 数组一键转 CSV,支持自定义分隔符(逗号/分号/Tab)、嵌套对象展开,可直接下载 .csv 文件。
分隔符
JSON
CSV
这个工具有帮到你吗?
代码示例
JavaScript / Node.js
// Using json2csv npm package
import { Parser } from 'json2csv';
const data = [
{ name: 'Alice', age: 30, city: 'Beijing' },
{ name: 'Bob', age: 25, city: 'Shanghai' },
];
const parser = new Parser({ fields: ['name', 'age', 'city'] });
const csv = parser.parse(data);
// name,age,city
// Alice,30,Beijing
// Bob,25,Shanghai
// Built-in (no deps)
const toCsv = (arr) => {
const keys = Object.keys(arr[0]);
const rows = arr.map(r => keys.map(k =>
JSON.stringify(r[k] ?? '')).join(','));
return [keys.join(','), ...rows].join('\n');
};Python (pandas)
import pandas as pd
import json
# From JSON string
json_str = '[{"name":"Alice","age":30},{"name":"Bob","age":25}]'
df = pd.read_json(json_str)
df.to_csv('output.csv', index=False)
# From nested JSON (flatten)
from pandas import json_normalize
data = [{"user": {"name": "Alice"}, "score": 100}]
df = json_normalize(data)
# Columns: user.name, score
df.to_csv('flat.csv', index=False)
# Custom delimiter
df.to_csv('output.csv', sep=';', index=False)Go
import (
"encoding/csv"
"encoding/json"
"os"
)
type Row struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
data := []Row{{"Alice", 30}, {"Bob", 25}}
f, _ := os.Create("output.csv")
w := csv.NewWriter(f)
w.Write([]string{"name", "age"})
for _, r := range data {
w.Write([]string{r.Name, fmt.Sprint(r.Age)})
}
w.Flush()
}Shell (jq + awk)
# jq: extract fields as TSV cat data.json | jq -r ' .[] | [.name, .age, .city] | @tsv ' > output.tsv # With headers cat data.json | jq -r ' ["name","age","city"], (.[] | [.name, .age, .city]) | @csv ' > output.csv # Using Miller (mlr) mlr --json --ocsv cat data.json > output.csv
常见问题
JSON 转 CSV 的常见使用场景是什么?
JSON 是 API 常用的数据交换格式,CSV 是电子表格(Excel、Google Sheets)和数据分析工具(pandas、R)的标准格式。常见场景:从 REST API 导出数据到 Excel 分析、将数据库查询结果导入数据分析流程、准备批量导入电商平台/CRM 系统的商品或客户数据。
如何处理嵌套 JSON 对象?
嵌套对象有两种处理方式:1)展平(Flatten):将 {"user": {"name": "Alice", "age": 30}} 转为两列 user.name 和 user.age;2)序列化:将嵌套对象转为 JSON 字符串后放入单个单元格。本工具提供"展开嵌套对象"选项。
CSV 文件中的特殊字符如何处理?
RFC 4180 规范要求:包含逗号、换行符或双引号的字段必须用双引号包裹,字段内的双引号需要用两个双引号转义("")。本工具自动处理这些情况。
什么时候用分号代替逗号作分隔符?
在欧洲部分国家(德国、法国、荷兰等),逗号被用作小数点,因此 Excel 在这些地区默认使用分号(;)作为 CSV 分隔符。如果文件要在欧洲 Excel 环境中使用,建议选择分号。
如何在 Python 中将 JSON 转换为 CSV?
使用 Python 内置库:import json, csv; data = json.load(open('data.json')); writer = csv.DictWriter(open('out.csv', 'w'), fieldnames=data[0].keys()); writer.writeheader(); writer.writerows(data)。也可以用 pandas。
JSON 数组以外的格式能转换吗?
本工具支持:JSON 数组(最常见)、单个 JSON 对象(转为一行)、包含数组字段的对象(自动提取第一个数组字段)。不支持:多层深度嵌套数组、混合类型的不规则数组。