跳到工具
ViewCSV
无需上传文件

CSV 转 JSON

orders.csv· 示例数据15 行 · 8 列
值类型
按列识别,且只有整列的值都符合时才转换,因此带前导零的编号和大于 9,007,199,254,740,991 的整数(如 18 位身份证号)会保持为文本。
名为 user.name 和 user.email 的列会合并成一个“user”对象,包含“name”和“email”。
[
  {
    "order_id": "001041",
    "customer": "磊 黄",
    "city": "北京",
    "product": "Coffee beans 1kg",
    "quantity": "7",
    "unit_price": "139.12",
    "order_date": "2026-01-27",
    "status": "pending"
  },
  {
    "order_id": "001042",
    "customer": "杰 徐",
    "city": "北京",
    "product": "Coffee beans 1kg",
    "quantity": "2",
    "unit_price": "132.10",
    "order_date": "2026-02-14",
    "status": "shipped"
  },
  {
    "order_id": "001043",
    "customer": "伟 孙",
    "city": "上海",
    "product": "Notebook A5",
    "quantity": "7",
    "unit_price": "129.75",
    "order_date": "2026-03-22",
    "status": "pending"
  },
  {
    "order_id": "001044",
    "customer": "敏 杨",
    "city": "上海",
    "product": "Chair, ergonomic",
    "quantity": "1",
    "unit_price": "122.25",
    "order_date": "2026-04-25",
    "status": "paid"
  },
  {
    "order_id": "001045",
    "customer": "静 王",
    "city": "成都",
    "product": "Coffee beans 1kg",
    "quantity": "9",
    "unit_price": "",
    "order_date": "2026-05-15",
    "status": "refunded"
  },
  {
    "order_id": "001046",
    "customer": "伟 黄",
    "city": "北京",
    "product": "Desk lamp",
    "quantity": "8",
    "unit_price": "104.23",
    "order_date": "2026-06-06",
    "status": "refunded"
  },
  {
    "order_id": "001047",
    "customer": " 伟 吴 ",
    "city": "成都",
    "product": "USB-C cable",
    "quantity": "5",
    "unit_price": "225.65",
    "order_date": "2026-07-08",
    "status": "refunded"
  },
  {
    "order_id": "001048",
    "customer": "杰 李",
    "city": "南京",
    "product": "Coffee beans 1kg",
    "quantity": "7",
    "unit_price": "74.98",
    "order_date": "2026-08-11",
    "status": "refunded"
  },
  {
    "order_id": "001049",
    "customer": "磊 王",
    "city": "南京",
    "product": "Monitor 27\"",
    "quantity": "9",
    "unit_price": "223.84",
    "order_date": "2026-09-22",
    "status": "pending"
  },
  {
    "order_id": "001050",
    "customer": "艳 吴",
    "city": "南京",
    "product": "Desk lamp",
    "quantity": "3",
    "unit_price": "91.94",
    "order_date": "2026-01-02",
    "status": "shipped"
  },
  {
    "order_id": "001051",
    "customer": "娜 刘",
    "city": "深圳",
    "product": "Monitor 27\"",
    "quantity": "2",
    "unit_price": "216.98",
    "order_date": "2026-02-18",
    "status": "pending"
  },
  {
    "order_id": "001052",
    "customer": "磊 刘",
    "city": "上海",
    "product": "Chair, ergonomic",
    "quantity": "8",
    "unit_price": "136.30",
    "order_date": "2026-03-22",
    "status": "pending"
  },
  {
    "order_id": "001053",
    "customer": "静 张",
    "city": "北京",
    "product": "Desk lamp",
    "quantity": "4",
    "unit_price": "238.82",
    "order_date": "2026-04-25",
    "status": "pending"
  },
  {
    "order_id": "001054",
    "customer": "艳 陈",
    "city": "南京",
    "product": "USB-C cable",
    "quantity": "4",
    "unit_price": "95.92",
    "order_date": "2026-05-21",
    "status": "paid"
  },
  {
    "order_id": "001043",
    "customer": "伟 孙",
    "city": "上海",
    "product": "Notebook A5",
    "quantity": "7",
    "unit_price": "129.75",
    "order_date": "2026-03-22",
    "status": "pending"
  }
]

15 行 · 1 个文件

打开或粘贴 CSV 文件,调整选项时 JSON 结果会实时显示在旁边。默认情况下所有值都保持为字符串,所以 00731 和 20 位的 ID 都会原样输出;只有当某列确实应该变成 JSON 数字和 true/false 时,才开启数字识别。文件在你的浏览器中转换,不会上传。

如何把 CSV 转换为 JSON

  1. 打开 .csv、.tsv 或 .txt 文件,拖到工具上,或粘贴数据。分隔符以及 UTF-8、UTF-16 的字节顺序标记(BOM)会自动识别;如需其他分隔符,或 Windows-1252、Shift_JIS、GB18030 等旧编码,请在 导入设置 中选择。
  2. 选择 JSON 结构。预览显示的是下载文件中前 200 行的实际输出。
  3. 设置 值类型、空单元格、嵌套和缩进,然后点击 下载 JSON 或 复制。

要用相同设置转换多个文件,请选择 批量转换多个文件,并一次选中所有文件:每个文件依次转换,结果打包成一个 ZIP 下载。

各选项的作用

对象数组(每行一个对象)每行一个对象,以表头为键:[{"sku": "00731", …}]。这是大多数 API 和 JavaScript 代码期望的结构。
二维数组(第一项为表头)先是表头行,然后每行一个数组。输出最小,并明确保留列的顺序。
按列分组的数组对象{"sku": ["00731", "00732"], …},便于图表库和数据框(data frame)工具使用。
JSON Lines(每行一个对象)每行一个 JSON 对象(JSON Lines),外面没有数组。适合日志管道、BigQuery 导入和逐行处理。
所有值都保留为文本每个单元格都变成 JSON 字符串,与文件中的写法完全相同。这是默认选项。
识别数字和 true/false只有当某列所有非空值都是能无损转换的普通数字时,该列才会变成 JSON 数字:没有前导零、有效数字不超过 15 位、不使用逗号小数。true/false 列会变成布尔值。日期仍为字符串。
空单元格写成 ""、null,或在该对象中省略这个键。
把带点号的列名转为嵌套对象user.name 和 user.email 会变成 {"user": {"name": …, "email": …}}。如果某个名称既是值又是父级(user 和 user.name),这些列保持平铺,工具会给出提示。

特殊数据如何处理

  • 值内被引号括起的逗号、引号("")和换行按 RFC 4180 读取,并写成普通的 JSON 字符串转义(\n、\")。
  • 表头名称完全按原样使用,包括空格和中文等非拉丁文字。空白表头会变成 Column 3,重复表头变成 name (2),因此不会有值被覆盖。
  • __proto__ 或 constructor 这样的表头会作为普通键写出。
  • 如果某行的值比表头多,多出的部分会使用名为 Column 4、Column 5… 的键;比表头短的行会得到空值。不会丢弃任何内容。
  • 带类型的输出绝不会把 0012 变成 12,也不会把 19 位的订单号变成被舍入的浮点数:这样的列会保持为文本。

常见问题排查

  • 所有内容都挤在一个键里。 分隔符识别错了;请在导入设置中选择逗号、分号、制表符或竖线,然后重新打开文件。
  • 中文变成乱码,或重音字母显示为 é。 文件不是 UTF-8 编码。请在导入设置中选择它的编码:中文 Windows 版 Excel 保存的文件通常选 GB18030,旧版 Excel 的西文导出通常是 Windows-1252。
  • 数字列仍然是文本。 至少有一个值不是普通数字,例如 1,5、12 kg 或带前导零的值。可以在 CSV 在线查看 中搜索该列找到它。
  • 提示某条记录存在引号错误。 该记录中有一个引号没有闭合。请在 CSV 编辑器 中修正,或检查源系统的导出设置。

限制与隐私

25 MB、10 万行或 200 万个单元格以内的文件可实时预览。更大的文件以流式方式转换:文件分块读取两遍(第一遍了解列和类型,第二遍写出),预览会被一条提示代替,下载内容包含所有行。单个输出文件最大 4 GB。

转换在当前标签页的后台线程中进行,所以页面保持流畅,点击 取消 即可停止。CSV 文件不会发送到任何服务器。

示例

一份商品清单,包含带前导零的 SKU 和引号内的逗号,使用默认设置转换(全部为文本、对象数组、2 个空格缩进)。如果开启 识别数字和 true/false,price 会变成 34.9,in_stock 会变成 true,而 sku 仍是 "00731"。

CSV
sku,name,price,in_stock
00731,"Desk lamp, brass",34.90,true
00732,Cable tidy,4.50,false
JSON
[
  {
    "sku": "00731",
    "name": "Desk lamp, brass",
    "price": "34.90",
    "in_stock": "true"
  },
  {
    "sku": "00732",
    "name": "Cable tidy",
    "price": "4.50",
    "in_stock": "false"
  }
]

常见问题

为什么默认情况下数字带引号?

因为 CSV 没有数据类型:00731、1.50 和 2024-03-01 都只是文本。保持为字符串,才能保证 JSON 与文件内容完全一致。如果你确定某列是数量,再开启数字识别。

能在这里把 JSON 转回 CSV 吗?

暂时不能。这个页面只能把 CSV 和 TSV 转换为 JSON。

JSON Lines 和 NDJSON 是一回事吗?

实际上是的:两者都表示每行一个完整的 JSON 值,以换行符分隔。

标准与参考资料