我用 30 行 Python 构建了 CSV 到 JSON 转换器——它取代了我价值 $50 的 SaaS
Source: Dev.to
(请提供需要翻译的正文内容,我将为您翻译成简体中文并保持原有的格式。)
Introduction
每位数据分析师、工程师和研究人员都会遇到同样的问题:
- 你有 CSV 格式的数据。
- 你需要把它转换成 JSON。
于是你会:
- 打开一个在线转换工具(Cloudinary、Zamzar、CloudConvert)
- 上传文件 (隐私顾虑:将数据上传到陌生服务器)
- 等待处理 (慢)
- 下载 JSON
- 每月重复 20 次
如果需要转换的行数超过 100 行,就会触及免费额度上限,必须支付 $50‑$100 / month 的订阅费用。
上个月我算了一下:我每月转换 CSV 50+ 次。
$50 / mo SaaS = $600 / year,而这本该只花 30 秒。
于是我用 Python 编写了一个 CSV‑to‑JSON Converter CLI —— 30 行代码,零依赖,完全免费。从此我再也没有为此付过订阅费。
问题:CSV → JSON 很简单(但成本高)
CSV 到 JSON 的转换在程序上非常简单,但在线工具要收费,因为它们需要:
- 托管服务器——费用由用户承担
- 速率限制——限制免费用户以促使升级
- 数据隐私——你需要把文件上传到它们的服务器(不太可靠)
- 文件大小限制——免费套餐:2 MB。想转换 50 MB?只能付费。
我的使用情况 vs. SaaS 工具
| 工具 | 成本 | 文件限制(每月) | 速度 |
|---|---|---|---|
| Cloudinary | $50 / mo | 100 MB / mo | 慢 |
| Zamzar | $50 / mo | 250 MB / mo | 慢 |
| CloudConvert | $48 / mo | 400 MB / mo | 慢 |
| 我的 Python 脚本 | $0 | 无限制 | 即时 |
我写了 Python 版,从此不再回头。
解决方案:30 行 Python
#!/usr/bin/env python3
"""CSV to JSON Converter – No dependencies, instant conversion, unlimited files"""
import csv
import json
import argparse
from pathlib import Path
def csv_to_json(csv_file, json_file=None, key_field=None, pretty=True):
"""Convert CSV to JSON."""
# Read CSV
with open(csv_file, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
data = list(reader)
# If key_field specified, convert to dict
if key_field:
data = {row[key_field]: row for row in data}
# Write JSON
output_file = json_file or csv_file.replace('.csv', '.json')
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2 if pretty else None)
return output_file
def main():
parser = argparse.ArgumentParser(
description="Convert CSV to JSON instantly, no dependencies",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
csv-to-json data.csv
csv-to-json data.csv --output result.json
csv-to-json data.csv --key id
csv-to-json data.csv --minify
"""
)
parser.add_argument('csv_file', help='CSV file to convert')
parser.add_argument('--output', '-o', help='Output JSON file (default: data.json)')
parser.add_argument('--key', '-k', help='Use column as key (converts to dict)')
parser.add_argument('--minify', action='store_true', help='Minify JSON (no pretty print)')
args = parser.parse_args()
output = csv_to_json(args.csv_file, args.output, args.key, not args.minify)
print(f"✅ Converted {args.csv_file} → {output}")
if __name__ == "__main__":
main()
就是这样。没有云服务器,没有速率限制,没有文件大小限制。
Source: …
实际示例
示例 1 – 基本 CSV → JSON
输入 CSV (users.csv):
id,name,email,role
1,Alice,alice@example.com,Engineer
2,Bob,bob@example.com,Manager
3,Charlie,charlie@example.com,Designer
命令
csv-to-json users.csv
输出 JSON
[
{
"id": "1",
"name": "Alice",
"email": "alice@example.com",
"role": "Engineer"
},
{
"id": "2",
"name": "Bob",
"email": "bob@example.com",
"role": "Manager"
},
{
"id": "3",
"name": "Charlie",
"email": "charlie@example.com",
"role": "Designer"
}
]
示例 2 – 使用列作为键
命令
csv-to-json users.csv --key id
输出 JSON
{
"1": {
"name": "Alice",
"email": "alice@example.com",
"role": "Engineer"
},
"2": {
"name": "Bob",
"email": "bob@example.com",
"role": "Manager"
},
"3": {
"name": "Charlie",
"email": "charlie@example.com",
"role": "Designer"
}
}
更容易通过 ID 查找。
示例 3 – 最小化(无美化)
命令
csv-to-json data.csv --minify
输出(单行,适用于 API 或数据库)
[{"id":"1","name":"Alice","email":"alice@example.com","role":"Engineer"},{"id":"2","name":"Bob","email":"bob@example.com","role":"Manager"},{"id":"3","name":"Charlie","email":"charlie@example.com","role":"Designer"}]
Real‑World Use Cases
- 📊 数据分析师 – 将 CSV 导出转换为 API 使用的 JSON。
- 🏢 企业 – 大规模将旧版 CSV 数据批量转换为 JSON。
- 🤖 自动化 – 在 CI/CD 流水线中通过脚本处理 CSV。
- 📱 移动应用 – 将 CSV 转换为本地移动数据库使用的 JSON。
- 🔗 API 测试 – 将测试数据 CSV 转换为 JSON 固件。
- 📈 BI 工具 – 将 CSV 报告导入基于 JSON 的仪表盘。
安装
git clone https://github.com/godlmane/csv-to-json-cli.git
cd csv-to-json-cli
python csv_to_json.py --help
或者只需将单个 Python 文件复制到任何项目中——无需任何设置。
基准测试:我的脚本 vs. SaaS
| 任务 | 我的脚本 | CloudConvert | Zamzar |
|---|---|---|---|
| 小文件(1 KB) | 找到一个你需要付费的问题 → 认识到它很简单 → 用 Python 实现 → 永久节省金钱和时间。 |
立即获取
👉 GitHub: csv-to-json-cli
免费。开源。MIT 许可证。永久使用。
请求
如果 CSV‑to‑JSON 转换器为您节省了时间或金钱,请考虑:
- ☕ 请我喝咖啡 – 帮助我构建更多此类工具
- ⭐ 给仓库加星 – 提高其他数据分析师的可见度
- 💬 发表评论 – 您最大的 CSV/JSON 痛点是什么?我会根据真实需求构建功能
停止为30秒的工作支付每月 50 美元。使用此工具,它是免费的。
附言 我已经构建了 13 个此类“替代你的 SaaS”工具。每个工具每年可节省 $100‑500 的订阅费用。合计可节省 $2,000‑5,000/年。如果您感兴趣,请关注下一个工具。