JSON 数据转换:CSV、XML、YAML 互转指南
在实际开发中,经常需要在不同数据格式之间转换。本文介绍 JSON 与 CSV、XML、YAML 等格式的互转方法。
JSON 转 CSV
适用场景
- 数据分析(Excel、Pandas)
- 数据导入导出
- 批量数据处理
JavaScript 实现
function jsonToCSV(json) {
const headers = Object.keys(json[0]);
const rows = json.map(obj =>
headers.map(h => JSON.stringify(obj[h] || '')).join(',')
);
return [headers.join(','), ...rows].join('\n');
}
Python 实现
import json
import csv
with open('data.json', 'r') as f:
data = json.load(f)
with open('data.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
注意事项
- 嵌套 JSON 需要展平
- 数组字段需要特殊处理
- 特殊字符需要转义
JSON 转 XML
JavaScript 实现
function jsonToXML(json, rootName = 'root') {
let xml = `<?xml version="1.0" encoding="UTF-8"?>\n<${rootName}>`;
function parse(obj) {
for (const [key, value] of Object.entries(obj)) {
if (typeof value === 'object' && value !== null) {
xml += `<${key}>${parse(value)}</${key}>`;
} else {
xml += `<${key}>${value}</${key}>`;
}
}
}
parse(json);
xml += `</${rootName}>`;
return xml;
}
Java 实现(Jackson XML)
XmlMapper xmlMapper = new XmlMapper();
String xml = xmlMapper.writeValueAsString(jsonObject);
JSON 转 YAML
JavaScript 实现
const yaml = require('js-yaml');
// JSON 转 YAML
const yamlStr = yaml.dump(jsonObject);
// YAML 转 JSON
const jsonObj = yaml.load(yamlStr);
Python 实现
import json
import yaml
# JSON 转 YAML
with open('data.json', 'r') as f:
data = json.load(f)
with open('data.yaml', 'w') as f:
yaml.dump(data, f, allow_unicode=True)
CSV 转 JSON
function csvToJSON(csv) {
const lines = csv.split('\n');
const headers = lines[0].split(',');
return lines.slice(1).map(line => {
const values = line.split(',');
return headers.reduce((obj, header, i) => {
obj[header] = values[i];
return obj;
}, {});
});
}
格式选择指南
| 格式 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| JSON | API、配置 | 类型丰富、JavaScript 原生 | 不支持注释 |
| CSV | 数据分析 | 简单、Excel 支持 | 不支持嵌套 |
| XML | 企业服务 | 强表达能力、命名空间 | 冗余、解析慢 |
| YAML | 配置文件 | 可读性好、支持注释 | 缩进敏感 |
在线工具推荐
jsjson.com 提供 JSON 格式化、压缩、校验等功能,支持在线操作,数据本地处理更安全。
总结
选择数据格式时,根据具体场景决定:API 用 JSON,数据分析用 CSV,企业服务用 XML,配置文件用 YAML。