CSV ⇄ JSON

粘哪一种都行——另一种格式随打随出,两个方向都支持。

怎么用

  1. 把 CSV(或 TSV、分号分隔文本)或一段 JSON 数组粘进输入框——结果随打随出,没有要点的按钮。方向按首字符自动判断,判断结果显示在结果面板头部,可以核对。
  2. 方向判断错了就从下拉里改。整行挤成一列,说明分隔符不对,把「自动」改成具体的分隔符。文件一开头就是数据时,关掉「首行为表头」,输出会从对象数组变成二维数组。
  3. 复制或下载结果:两者用的是屏幕上这同一段文本,文件名分别是 data.json 和 data.csv。「填入示例」会按当前方向填入一段对应格式的示例。

示例

输入(CSV)

订单号,客户,备注,邮编,金额
0001,"张, 伟","要求 3 月 11 日送达",100081,1299.00
0002,李娜,,200120,88.50

输出(JSON)

[
  {
    "订单号": "0001",
    "客户": "张, 伟",
    "备注": "要求 3 月 11 日送达",
    "邮编": 100081,
    "金额": 1299
  },
  {
    "订单号": "0002",
    "客户": "李娜",
    "备注": "",
    "邮编": 200120,
    "金额": 88.5
  }
]

这份输出里有三处值得核对:JSON 的键是中文列名,不随界面语言改变;「张, 伟」里的英文逗号在引号内,所以留在值里、没有劈出第 5 列;「0001」保住了前导零(否则会变成 1),而「1299.00」输出为 1299——JSON 数字存不住小数末尾的零,要保住原字面请关掉「识别数字与布尔值」。

口径、局限与已知问题

  • 不做文件上传、拖放与 URL 抓取:只接受粘进来的文本。拖放区会吃掉结果区需要的高度,而一旦支持文件就得处理非 UTF-8 编码——站内的「CSV 查看器」已经把这件事做完了(GB18030 / Big5 / Windows-1256),在那边打开文件再把文本复制过来即可。
  • 输入上限 1,000,000 个字符;超过 200,000 个字符时,结果会在你停止输入后才更新并给出提示。超过硬上限会明确报错,绝不静默截断你的输入。
  • 类型识别是逐格、保守的:只把 true / false / null(仅小写)和严格符合 JSON 语法的数字转成原生值。带前导零的整数(00501)与 16 位及以上的长整数(长 ID)一律保持字符串,空单元格保持 "" 而不是变成 null。
  • JSON 数字存不住小数末尾的零,所以 89.90 会变成 89.9、42.00 会变成 42。要逐字保住原值,请关掉「识别数字与布尔值」。
  • 列数取全文最宽的一行,所以任何字段都不会被丢:短行右侧补空字符串,多出来的字段自动命名。字段数与首行不一致的行会按行号列出来。
  • 列名重复时会加 _2、_3 后缀而不是互相覆盖——覆盖会让一整列静默消失。列名为空或缺失时会命名为 column_N。这些名字是机器可读记号,在三种界面语言下完全一致。
  • JSON → CSV 接受对象数组(主路径)、二维数组(按位置出列)、单个对象、原始值数组(单列 value)。其它形状——顶层是标量,或者数组里对象与其它值混杂——一律报出所在行列,不做猜测。
  • 嵌套对象默认按点号路径扁平化(地址.区);数组不扁平化,会写成单元格内的紧凑 JSON。关掉扁平化,嵌套对象也会写成单元格内 JSON。null 写成空单元格。
  • JSON 按严格语法解析:不允许注释、尾随逗号、单引号、未转义控制字符,嵌套上限 64 层。每行一个对象的 JSONL 不受支持——请先把它们包进一个数组。
  • CSV 一侧是宽容的:引号没闭合会取到文末并点名行号,空行跳过并计数,字段数不符的行会被列出。只有 JSON 一侧才会产生硬错误。
  • 输出的 CSV 用 CRLF 行结束符、不带 BOM,与你复制到的文本完全一致。若 Excel 双击打开含中文的 CSV 出现乱码,请用「数据 → 从文本/CSV 导入」并选择 UTF-8。
  • 不做的事:.xlsx、压缩包、多文件、JSONL、YAML/XML/SQL/Excel 导出、排序、筛选、选列、去重——这些分别由「CSV 查看器」和「配置格式互转」承担。全程不上传、不存储、不写入 URL。

数据换好格式之后,通常还需要这些。