我用 30 行 Python 构建了 CSV 到 JSON 转换器——它取代了我价值 $50 的 SaaS

发布: (2026年3月8日 GMT+8 20:16)
6 分钟阅读
原文: Dev.to

Source: Dev.to

(请提供需要翻译的正文内容,我将为您翻译成简体中文并保持原有的格式。)

Introduction

每位数据分析师、工程师和研究人员都会遇到同样的问题:

  1. 你有 CSV 格式的数据。
  2. 你需要把它转换成 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 / mo100 MB / mo
Zamzar$50 / mo250 MB / mo
CloudConvert$48 / mo400 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

任务我的脚本CloudConvertZamzar
小文件(1 KB)找到一个你需要付费的问题 → 认识到它很简单 → 用 Python 实现 → 永久节省金钱和时间。

立即获取

👉 GitHub: csv-to-json-cli

免费。开源。MIT 许可证。永久使用。

请求

如果 CSV‑to‑JSON 转换器为您节省了时间或金钱,请考虑:

  • 请我喝咖啡 – 帮助我构建更多此类工具
  • 给仓库加星 – 提高其他数据分析师的可见度
  • 💬 发表评论 – 您最大的 CSV/JSON 痛点是什么?我会根据真实需求构建功能

停止为30秒的工作支付每月 50 美元。使用此工具,它是免费的。

附言 我已经构建了 13 个此类“替代你的 SaaS”工具。每个工具每年可节省 $100‑500 的订阅费用。合计可节省 $2,000‑5,000/年。如果您感兴趣,请关注下一个工具。

0 浏览
Back to Blog

相关文章

阅读更多 »

警告 PyPy 已不再维护

markdown !@konstinhttps://avatars.githubusercontent.com/u/6826232?s=40&v=4 看起来 PyPy 已经不再积极开发,甚至被逐步淘汰……