跳至正文

CSV ↔ JSON 转换器

支持 CSV 和 JSON 格式之间双向转换的免费在线工具。

Examples

CSV Example:

name,age,city
John,30,New York
Jane,25,Los Angeles
Bob,35,Chicago

JSON Example:

[
  {"name": "John", "age": "30", "city": "New York"},
  {"name": "Jane", "age": "25", "city": "Los Angeles"},
  {"name": "Bob", "age": "35", "city": "Chicago"}
]

主要功能

  • 双向转换:CSV → JSON、JSON → CSV
  • 分隔符选择:逗号、分号、制表符、竖线
  • 标头选项:将首行用作标头
  • JSON 缩进:2/4 个空格或压缩
  • 交换功能:快速将结果转换为输入
  • 即时复制:复制转换结果

什么是 CSV?

CSV(Comma-Separated Values)是用逗号分隔值的文本格式。

CSV 示例

name,age,city
John,30,New York
Jane,25,Los Angeles
Bob,35,Chicago

特点

  • 简单轻便
  • Excel 易于打开
  • 适合电子表格数据交换
  • 无法表示嵌套结构

什么是 JSON?

JSON(JavaScript Object Notation)是 JavaScript 对象格式的数据结构。

JSON 示例

[
{"name": "John", "age": "30", "city": "New York"},
{"name": "Jane", "age": "25", "city": "Los Angeles"},
{"name": "Bob", "age": "35", "city": "Chicago"}
]

特点

  • 结构化数据表示
  • 支持嵌套结构
  • 广泛用于 Web API
  • 与 JavaScript 自然集成

转换选项

分隔符(Delimiter)

分隔符字符使用场景
逗号,最常见(标准 CSV)
分号;欧洲地区(数字使用逗号)
制表符\tTSV 文件、复制/粘贴
竖线``

标头行

包含标头:

name,age,city
John,30,New York

[{"name": "John", "age": "30", "city": "New York"}]

不包含标头:

John,30,New York

[["John", "30", "New York"]]

使用场景

1. Excel → JSON

# 从 Excel 复制
Product,Price,Stock
Apple,1000,50
Banana,500,100

# 转换为 JSON
[
{"Product": "Apple", "Price": "1000", "Stock": "50"},
{"Product": "Banana", "Price": "500", "Stock": "100"}
]

2. API 数据 → CSV

# API 响应
[
{"id": 1, "name": "Item A", "price": 100},
{"id": 2, "name": "Item B", "price": 200}
]

# 导出为 CSV
id,name,price
1,Item A,100
2,Item B,200

3. 数据库备份

# 将 SQL 结果保存为 CSV
user_id,username,email
1,john_doe,john@example.com
2,jane_smith,jane@example.com

# 转换为 JSON 导入 NoSQL

4. 转换配置文件

# config.json
{
"settings": [
{"key": "theme", "value": "dark"},
{"key": "language", "value": "zh-CN"}
]
}

# 导出为 CSV
key,value
theme,dark
language,zh-CN

编程示例

JavaScript

// CSV → JSON
const csv = `name,age,city
John,30,New York
Jane,25,Los Angeles`;

const lines = csv.split('\n');
const headers = lines[0].split(',');
const result = [];

for (let i = 1; i < lines.length; i++) {
const obj = {};
const values = lines[i].split(',');
headers.forEach((header, index) => {
obj[header] = values[index];
});
result.push(obj);
}

console.log(JSON.stringify(result, null, 2));

// JSON → CSV
const json = [
{name: 'John', age: 30, city: 'New York'},
{name: 'Jane', age: 25, city: 'Los Angeles'}
];

const headers = Object.keys(json[0]);
const csv = [
headers.join(','),
...json.map(row =>
headers.map(header => row[header]).join(',')
)
].join('\n');

console.log(csv);

Python

import csv
import json

# CSV → JSON
with open('data.csv', 'r') as f:
reader = csv.DictReader(f)
data = list(reader)

with open('data.json', 'w') as f:
json.dump(data, f, indent=2)

# JSON → 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)

注意事项

CSV 的限制

  1. 嵌套结构:CSV 只能表示平面数据
  2. 数据类型:所有值都被视为字符串
  3. 特殊字符:包含逗号或换行符时需要引号

JSON 的限制

  1. 文件大小:比 CSV 容量大
  2. 人类可读性:复杂结构可读性低
  3. Excel 兼容性:无法直接打开(需要转换)

CSV 格式注意事项

引号处理

# 值中有逗号时用引号包裹
name,description
"Smith, John","Software Developer"
"Doe, Jane","Data Analyst, Manager"

转义

# 引号内的引号需要两个
name,quote
John,"He said ""Hello"""

常见问题

Q:CSV 中的空值如何处理?

**A:**在 JSON 中转换为空字符串("")。

Q:JSON 的嵌套对象会怎样?

**A:**此工具仅支持平面结构。嵌套对象可能转换为字符串。

Q:可以处理大文件吗?

**A:**取决于浏览器内存。非常大的文件请使用服务器端工具。

Q:可以直接转换 Excel 文件吗?

**A:**不可以。请先在 Excel 中另存为 CSV,然后使用。

相关工具

隐私保护

此工具完全在客户端运行。您输入的数据不会发送到服务器,仅在浏览器中处理。

💬 这个工具对您有帮助吗?

如有任何疑问或改进建议,欢迎随时提供反馈!