跳转到主要内容

将 CSV 转换为 JSON

每一行 CSV 都会变成一个 JSON 对象,标题行提供属性名称。本指南用一个包含引号内逗号和转义引号的小文件演示转换过程,并逐条说明转换器所应用的规则。

示例详解

输入 (CSV)
id,name,item,price,paid
1,"Smith, Jane","Monitor 27""",189.99,true
2,Kim,Keyboard,,false
输出 (JSON)
[
  {
    "id": 1,
    "name": "Smith, Jane",
    "item": "Monitor 27\"",
    "price": 189.99,
    "paid": true
  },
  {
    "id": 2,
    "name": "Kim",
    "item": "Keyboard",
    "price": null,
    "paid": false
  }
]

由于 "Smith, Jane" 被双引号包裹,其中的逗号会保留在值内,而不会开始新的一列。在 "Monitor 27""" 中,连续的两个双引号会变成一个字面引号。Kim 的 price 为空,因此变为 null;数字和 true/false 会输出为 JSON 类型,而不是字符串。

转换器的处理规则

  • 每个非空行就是一条记录,空行会被跳过。带引号的值中不能包含换行。
  • 值中含有分隔符时,请用双引号包裹。在引号内,引号字符要写成两个引号 ("")。
  • 每个值开头和结尾的空格会被去除。
  • 开启“第一行作为标题”时,第一行提供键名;关闭时,键名依次为 col0、col1、col2 等。
  • 空单元格和 null 一词会变为 null,true 和 false(不区分大小写)会变为布尔值,数字文本即使带引号也会变为数字,因此 00123 会变成 123。
  • 值的数量少于标题数量的行,缺少的列会填入 null;超出最后一个标题的值会被丢弃。

更多转换指南