Skip to content

CSV 转 JSON 转换器

在浏览器中将 CSV 转换为 JSON。支持 RFC 4180、类型推断、表头行、大整数安全。100% 隐私,无需上传。

无追踪 浏览器中运行 免费
预设
选项 · , · auto · LF · header · no BOM · flatten
分隔符
首行为表头
推断类型(数字、布尔、null)
0 字符 0
JSON 输出
0 行 · 0 列
已审核 RFC 4180 合规性、类型推断正确性、大整数精度保留以及无表头自动命名行为 — Go Tools 工程团队 · 2026年5月9日

什么是 JSON?为什么要从 CSV 转换?

JSON(JavaScript Object Notation)是 API 响应、配置文件以及结构化数据交换的通用格式 — 每一种现代编程语言、每一个数据库和每一个 Web 框架都对 JSON 提供一等支持。相比之下,CSV(Comma-Separated Values,逗号分隔值)是历史最悠久、支持最广泛的表格格式 — 每一款电子表格应用、每一个数据库导出、每一个分析工具都能生成它。在两者之间转换是数据工程中最常见的杂活之一:你从电子表格、数据库转储或第三方导出收到 CSV,需要 JSON 来喂给 API、注水到前端或加载到 NoSQL 存储。本工具就是为这条转换路径而生,并能处理大多数在线转换器搞砸的四种场景。

与典型的在线 CSV 转 JSON 转换器相比,本工具有四个重要差异点:

**1. RFC 4180 状态机解析器。** CSV 看起来简单,但引号规则非常微妙:用双引号包裹的字段可以包含逗号、内嵌换行符以及转义的双引号(加倍如 "")。简单的按逗号分割解析器会在真实数据上崩溃 — 含逗号的地址、多行文本字段、含引号的引号值都会出错。本工具实现了遵循 RFC 4180(IETF 的 CSV 规范)的真正状态机解析器,在两个方向上都能正确处理带引号字段、内嵌分隔符、内嵌行结尾和转义引号。输出可在 Python 的 csv 模块、PostgreSQL COPY、AWS S3 SELECT 以及任何兼容解析器之间往返。

**2. 带大整数安全的类型推断。** 开启「推断类型」后,数字字符串会变成数字、true/false 会变成布尔值、空单元格会变成 null。但推断流水线有两个重要保护:前导零字符串(007、0123)会保留为字符串,因为前导零表明这是标识符 — 转换为数字会静默剥掉它们。超过 2^53 - 1(9007199254740991)的整数也会保留为字符串,以避免 IEEE 754 精度损失。Twitter snowflake ID、Discord ID、MongoDB Long 字段、K8s resourceVersion 都保持精确,不会被静默四舍五入。ISO 日期字符串会刻意保留为字符串 — JSON 没有原生的日期类型。

**3. 表头自动命名或使用首行。** 开启「首行为表头」(默认)时,首行被视为列名,每个后续行成为以这些名为键的 JSON 对象。关闭后,解析器会自动将列命名为 col1、col2、col3 — 适用于没有表头行的原始数据转储。分隔符按钮行覆盖四种最常见的分隔符:逗号(RFC 4180 默认)、分号(Excel-EU 区域)、制表符(Unix 工具与数据仓库的 TSV)和竖线(高逗号字段)。选按钮即解析 — 典型的真实 CSV 无需手动配置。

**4. 100% 浏览器端隐私。** 你的 CSV 数据 — 通常包含用户 PII、内部数据库导出、客户记录以及生产导出 — 永远不会离开你的浏览器。不会向任何服务器发送数据、不会记录、也不会有捕获输入的分析。你可以在浏览器的「网络」标签中验证。这是在线工具中处理敏感数据的唯一安全方式。点击「交换」查看反向,或在你的目标是 CSV 时使用我们的配套 JSON 转 CSV 转换器。在使用 JSON 输出前需要验证?请试试我们的 JSON 格式化工具

JSON 的优势是精确的类型、原生的嵌套,以及在任何地方都能一致解析的严格规范 — 当机器消费数据时,是正确的格式。CSV 的优势是普适性和人类可读性 — 当人类打开电子表格时,是正确的格式。正确的工具取决于消费方:人类阅读电子表格 → CSV,机器消费 API → JSON。本转换器在两个方向上都处理了这座桥梁。

// Input CSV (comma + LF, header on, infer types on)
id,name,active,score
1,Alice,true,98.5
2,Bob,false,87
3,Carol,true,

// Output JSON
[
  { "id": 1, "name": "Alice", "active": true, "score": 98.5 },
  { "id": 2, "name": "Bob", "active": false, "score": 87 },
  { "id": 3, "name": "Carol", "active": true, "score": null }
]

// Same input with Header off (no first-row keys)
1,Alice,true,98.5
2,Bob,false,87

// Becomes
[
  { "col1": 1, "col2": "Alice", "col3": true, "col4": 98.5 },
  { "col1": 2, "col2": "Bob", "col3": false, "col4": 87 }
]

核心功能

RFC 4180 状态机解析器

遵循 IETF CSV 规范的严格状态机解析器:正确处理带引号字段、内嵌分隔符、内嵌 CR/LF 以及转义双引号(加倍)。输出可干净地往返于 Python csv、PostgreSQL COPY 和 AWS S3 SELECT。

带大整数安全的类型推断

开启「推断类型」会将数字字符串转换为数字、true/false 转换为布尔值、空单元格转换为 null。超过 2^53 - 1 的整数会保留为字符串以避免 IEEE 754 精度损失;前导零字符串(007、0123)会保留为字符串以保持标识符语义。

表头开/关与自动命名

开启「首行为表头」(默认)使用首行作为 JSON 键。关闭后自动将列命名为 col1、col2、col3 — 适用于没有表头行的原始数据转储和机器生成的 CSV。自动命名是确定性的,对流水线友好。

逗号、分号、制表符、竖线分隔符

面向四种最常见分隔符的一键按钮:`,`(RFC 4180 默认)、`;`(Excel-EU 区域)、`\t`(来自 Unix 工具、BigQuery、Snowflake 的 TSV)以及 `|`(高逗号自由文本字段)。解析器会立即切换模式 — 无需先转换文件。

大整数检测

解析过程中检测超过 2^53 的整数,并在 JSON 中以字符串形式保留 — Twitter snowflake ID、Discord ID、MongoDB Long 字段以及 K8s resourceVersion 保持精确,不会被 JavaScript 的 IEEE 754 数字类型静默四舍五入。

支持「交换」的双向转换

一个「交换方向」按钮即可原地翻转转换:输入变为 JSON、输出变为 CSV、当前文本保留。在两个方向上往返你的数据,在投入流水线前验证无损转换。

示例

带表头的电子表格导出

id,name,email,role
1,Alice,alice@example.com,admin
2,Bob,bob@example.com,editor
3,Carol,carol@example.com,viewer
4,Dan,dan@example.com,viewer

来自电子表格的标准 CSV。开启「首行为表头」并启用「推断类型」后,会得到整洁的带类型 JSON:整数仍是整数,布尔/null 也会被识别。

制表符分隔的日志导出(TSV)

ts	event	user	duration
2026-05-09T10:00:00Z	signup	alice	142
2026-05-09T10:01:00Z	login	alice	87
2026-05-09T10:02:00Z	checkout	alice	312
2026-05-09T10:03:00Z	logout	alice	44

选择 `\t`(Tab)作为分隔符。默认开启的「首行为表头」会自动将首行作为键。

Excel-EU CSV(分号分隔符、CRLF)

id;name;price
1;Alice;1234,56
2;Bob;9876,54
3;Carol;42,00

Excel 在 DE/FR/IT/ES 区域设置中会输出 `;` 分隔符,因为逗号被用作小数点。从分隔符按钮中选择 `;` — 解析器会处理其余细节。

内嵌逗号与转义引号

name,role,note
"Smith, Jr.",admin,"He said ""hi"""
"Doe, Jane",editor,"Two
lines"

标准 RFC 4180 引号规则:带引号的字段可以包含分隔符与转义引号(加倍)。解析器是状态机 — 不会在引号内部进行切分。

包含大整数 ID 的 CSV

id,event,user
9007199254740993,signup,alice
9007199254740994,login,bob
9007199254740995,checkout,carol

大整数超过了 JavaScript 的安全范围(2^53 - 1)。开启「推断类型」后,解析器会检测到这一点,并将值保留为字符串以保持精度 — 不会截断。

无表头 CSV

1,Alice,admin
2,Bob,editor
3,Carol,viewer
4,Dan,viewer

关闭「首行为表头」;列会被自动命名为 `col1`、`col2`、`col3`。适用于没有表头行的原始数据转储。

使用方法

  1. 1

    粘贴 CSV

    在上方输入框中输入或粘贴 CSV。工具接受逗号、分号、制表符和竖线分隔的数据。也可以点击「加载示例」试用电子表格导出、TSV 日志或带分号的 Excel-EU CSV 等示例。

  2. 2

    选择分隔符(或 Tab)

    点击 `,`(默认)、`;`(Excel-EU 分号)、`\t`(TSV)或 `|`(竖线),一键切换分隔符。打开选项面板进行精细控制:「首行为表头」开/关、「推断类型」开/关。关闭「首行为表头」会自动将列命名为 col1、col2、col3。

  3. 3

    复制或下载 JSON

    点击「复制」将 JSON 复制到剪贴板,或点击「下载」将其保存为 .json 文件,可直接用于你的代码、API 或流水线。如需往返,点击「交换方向」原地将 JSON 转回 CSV。

常见转换问题

源文件中内嵌逗号未加引号

如果你的 CSV 是用简单 join(',') 手工构建的,任何含有逗号的字段(Smith, Jr. 或 1,234.56)都会破坏列边界 — 解析器会看到本应是一列的位置上有多余的列。修复方法是按 RFC 4180 用双引号包裹问题字段。本工具能正确处理带引号字段,但源 CSV 必须使用正确的引号。

✗ 错误
name,role
Smith, Jr.,admin
// Parser reads 3 columns: "Smith", " Jr.", "admin"
✓ 正确
name,role
"Smith, Jr.",admin
// Parser reads 2 columns: "Smith, Jr.", "admin"

Excel-EU 分号被当作逗号解析

欧洲 Excel 区域设置(德国、法国、西班牙、意大利等)会输出分号分隔的 CSV,因为逗号被保留作小数分隔符。如果保留分隔符为 `,`(默认),每一行都会塌陷成包含内嵌分号的单列。请选择 `;` 分隔符按钮 — 解析器会切换到分号模式并产生正确的列。

✗ 错误
// Wrong delimiter (default comma) on Excel-EU file
id;name;price
1;Alice;1234,56
// Each row becomes one column: { col1: "1;Alice;1234,56" }
✓ 正确
// Correct: pick `;` Delimiter chip
id;name;price
1;Alice;1234,56
// Output: { id: 1, name: "Alice", price: "1234,56" }

JSON.parse 后大整数 ID 丢失精度

Twitter snowflake ID、Discord ID 以及其他 64 位整数超出 JavaScript 的安全范围(2^53 - 1),在 JSON.parse() 将其作为数字读取时会丢失精度。开启「推断类型」时,本工具会检测安全边界以上的值,将其保留为字符串,从而保持精确数字。在代码中使用 BigInt("9007199254740993") 转换回数字类型。

✗ 错误
// Without big-int detection
{"id": 9007199254740993}
// JavaScript reads as 9007199254740992 (precision lost)
✓ 正确
// With Infer types on, big integers stay as strings
{"id": "9007199254740993"}
// Use BigInt(value) in code to preserve precision

表头行包含空格

如果你的 CSV 表头是 `id, name, email`(逗号后带空格),JSON 键会变成 "id"、" name"、" email" — 包括前导空格。按 RFC 4180,解析器会按给定的内容原样保留表头。修复方法要么在粘贴前清理源 CSV,要么在下游重命名键(jq 'with_entries(.key |= ltrimstr(" "))' 或 JavaScript Object.fromEntries(Object.entries(o).map(([k,v]) => [k.trim(), v])))。

✗ 错误
id, name, email
1, Alice, alice@example.com
// Output keys: "id", " name", " email" (with leading spaces)
✓ 正确
id,name,email
1,Alice,alice@example.com
// Output keys: "id", "name", "email" (clean)

行长度不一致

当 CSV 各行的列数不同时(部分行末尾有逗号,部分没有),解析器会用空字符串(或在开启「推断类型」时用 null)填充缺失的单元格,并丢弃超过表头长度的多余列。会出现 Schema notes 警告告知你这些行已被规范化。这通常没问题,但如果下游消费方期望严格的行形状,请验证输出。

✗ 错误
name,role,note
Alice,admin
Bob,editor,first day
// Row 1 is short by one cell
✓ 正确
// Output (note empty/null cell in row 1)
[
  { "name": "Alice", "role": "admin", "note": null },
  { "name": "Bob", "role": "editor", "note": "first day" }
]

日期字符串被意外强制转换

ISO 8601 日期字符串(如 2026-05-09T10:00:00Z)会刻意作为字符串保留在 JSON 输出中 — JSON 没有原生的日期类型,强制转换要么生成无法在序列化中存活的 JavaScript Date 对象,要么生成丢失时区信息的数字时间戳。这是有意为之。请在代码中使用 new Date(value) 或你选择的日期库在使用时进行解析。不要仅为了保留日期就关闭「推断类型」 — 那会同时把数字也保留为字符串。

✗ 错误
// Expecting a Date object in the output
ts,event
2026-05-09T10:00:00Z,signup
// Output ts is the string "2026-05-09T10:00:00Z", NOT a Date
✓ 正确
// Correct: parse at the point of use in your code
const rows = JSON.parse(output);
const when = new Date(rows[0].ts);
// when is now a Date object

常见使用场景

电子表格导出转 API 导入
粘贴从 Excel、Google Sheets 或 Numbers 导出的 CSV,获得可直接 POST 到 REST API、GraphQL mutation 或批量导入端点的 JSON 对象数组。这是最常见的场景 — 分析师产出电子表格数据,工程师需要带类型的 JSON 来喂给后端。
Excel 导出转工具链
将 Excel CSV 导出(包括用 `;` 按钮处理的 Excel-EU 分号分隔文件)转换为 JSON,用于通过 JavaScript 工具、jq 脚本或任何读取 JSON 的系统处理。解析器会正确处理 BOM 剥离和 CRLF 行结尾,让 Excel 导出不会在首行出错。
TSV 日志转分析
来自 BigQuery 导出、Snowflake 卸载、Vector 流水线或 Unix 工具(cut、awk)的制表符分隔日志通常以 .tsv 形式抵达。选择 Tab 分隔符按钮,获得带类型的 JSON 数组,可直接用于临时分析、仪表板摄取或流水线阶段转换。
数据库 CSV 转储转 ETL
将 PostgreSQL COPY TO CSV 输出、MySQL SELECT INTO OUTFILE 或任何数据库 CSV 转储转换为 JSON,用于加载到 NoSQL 存储、喂给 JavaScript ETL 流水线,或以行分隔 JSON 形式发送到 BigQuery。大整数检测可保留超出 JavaScript 安全范围的数字 ID。
Postman/Newman CSV 测试结果消费
Postman 测试运行会按请求导出 pass/fail 的 CSV 报告。转换为 JSON 用于编程消费 — 喂给状态仪表板、告警流水线或测试结果聚合器。形状不一致的行(失败测试有额外的 error 列)会用空/null 填充处理。
小型 CSV 转快速 JSON 配置
有一份常量的小型 CSV — 货币代码、国家名称、产品 SKU — 需要 JSON 数组用于配置文件或 JavaScript 常量?粘贴、复制、粘贴。开启「推断类型」时,数字和布尔会被正确分类;开启「首行为表头」时,会得到带命名字段的对象数组,可直接放入 .json 文件。

技术细节

RFC 4180 状态机解析器内部
解析器是遵循 RFC 4180 的真正有限状态机实现。状态包括 UnquotedField、QuotedField、AfterQuote、RowEnd 和 EndOfInput。解析器能正确处理含分隔符的带引号字段、带引号字段内的内嵌 CR/LF、转义双引号(加倍如 "")以及尾随换行符。这能产生在 Python 的 csv 模块、PostgreSQL COPY、AWS S3 SELECT 以及任何兼容解析器之间无损往返的输出。状态机感知分隔符,因此从 `,` 切换到 `;` 或 `\t` 不会改变引号语义 — 只改变字段分隔符。
类型推断算法
开启「推断类型」时,每个单元格会经过有序的检测流水线。第一,空单元格变为 JSON null。第二,字面量字符串 true 和 false 变为 JSON 布尔值。第三,前导零字符串(^0[0-9]+$)保留为字符串以保持标识符语义 — 转换为数字会静默剥掉前导零。第四,整数字面量与安全整数边界(-2^53+1 到 2^53-1)比较;超出此范围的值保留为字符串以避免 IEEE 754 精度损失。第五,ISO 8601 日期字符串通过正则检测并刻意保留为字符串 — JSON 没有原生的日期类型。通过所有五个保护的内容会通过 Number()(数字)转换或保留为字符串(其他一切)。
BOM 剥离与编码处理
所有输入均按 UTF-8 处理。可选的 UTF-8 BOM(0xEF 0xBB 0xBF)若存在则会从首行的首个单元格中静默剥除 — 这可以防止 BOM 字节作为多余字符包含在第一个列名的开头(Windows 上的 Excel 通常会输出 BOM,这会破坏简单解析器)。其他编码(Windows-1252、ISO-8859-1)不会被自动检测;当文本到达本工具时,浏览器 File API 已将字节解码为 UTF-8。如果你有非 UTF-8 输入,请先用 iconv 或编辑器的编码导出选项进行转换再粘贴。

最佳实践

非逗号数据请显式选择分隔符
不要依赖自动检测。如果你的 CSV 使用分号(Excel-EU)、制表符(来自 BigQuery、Snowflake 或 Unix 工具的 TSV)或竖线(高逗号字段),请在粘贴前点击对应的分隔符按钮。解析器感知分隔符:切换按钮会立即重新解析输入。这能避免最常见的 CSV 转 JSON 失败模式 — 因为解析器使用了错误的分隔符,每一行都塌陷成单个单元格。
保持「推断类型」开启以获得带类型 JSON
开启「推断类型」(默认)时,你会得到带类型的 JSON:数字是数字、布尔是布尔、空单元格处是 null。这是大多数消费方想要的 — API、前端、JavaScript 代码。仅当你明确需要每个单元格作为字符串时(下游严格类型的消费方、比较精确源字节的验证流水线)才关闭「推断类型」。检测流水线对前导零字符串、大整数和 ISO 日期都有保护,因此即使开启推断,标识符和日期也是安全的。
在上游 CSV 中将 ID 作为字符串加引号
如果你的 CSV 由你掌控的数据库或流水线生成,请将大数字 ID(Twitter snowflake、Discord ID、K8s resourceVersion)以加引号的 CSV 字符串形式输出("9007199254740993"),以便干净地通过类型推断。无论如何解析器都会将其保留为字符串(大整数检测会捕获 2^53 - 1 以上的值),但显式加引号是最稳健的上游契约,可避免对精度的任何歧义。
表头行应是首行
开启「首行为表头」(默认)会自动将首行检测为列名。如果你的 CSV 在表头之前有注释、空行或元数据,请在粘贴前剥除 — 解析器不会跳过前导的非数据行。对于无表头 CSV(原始导出、机器生成的转储),关闭「首行为表头」,列会按顺序自动命名为 col1、col2、col3。不要试图通过在无表头文件前添加一行来伪造表头;要么关闭「首行为表头」,要么修复源文件。
CSV → JSON → CSV 往返请使用字符串化模式
如果你计划在两个方向上往返数据(CSV → JSON → CSV),反向(JSON → CSV)需要字符串化模式才能让任何嵌套数组或对象无损存活。反向中的展平模式会输出点分隔键(customer.address.city),无法被 CSV 解析器完美还原。完整的反向参考与往返测试说明请参见我们的 JSON 转 CSV 转换器

常见问题

这个工具是做什么的?
它直接在浏览器中将 CSV 转换为 JSON,并支持双向转换:点击「交换方向」即可在同一面板中将 JSON 转回 CSV。在输入区域粘贴 CSV,工具会立即生成 JSON 输出 — 无需上传、无需注册,数据不离开你的设备。解析器符合 RFC 4180,分隔符按钮支持逗号、分号(Excel-EU)、制表符(TSV)和竖线,「推断类型」选项可将数字字符串转换为数字、true/false 转换为布尔值、空单元格转换为 null。工具还能处理那些原本会通过 JSON.parse 丢失精度的大整数 ID、带引号字段中的内嵌逗号、转义双引号(加倍),以及通过自动命名列(col1、col2、col3)处理的无表头数据。
我的数据会被上传到任何地方吗?
不会。所有转换 100% 在你的浏览器中通过 JavaScript 完成。你的 CSV 数据永不传输、永不存储在任何服务器上、永不被记录或分析。这使该工具可以安全处理包含 PII 的电子表格导出、内部数据库 CSV 转储、客户记录以及任何敏感数据。你可以在浏览器的「网络」标签中验证 — 粘贴 CSV 不会触发任何网络请求。工具不使用任何 Cookie 来记录输入数据,也不接入会捕获你粘贴内容的第三方分析。
类型推断是如何工作的?
开启「推断类型」后,每个解析得到的单元格会先经过一个小型检测流水线,再放入 JSON:数字字符串(1、42、-3.14)会变成数字,true/false 会变成布尔值,空字符串以及字面量 null 会变成 JSON null,其余内容保持为字符串。这里有两个重要的保护机制。第一,前导零字符串(如 007 或 0123)即使看起来像数字也会保留为字符串 — 前导零表示该值是标识符(邮政编码、国家电话区号、序列 ID),转换为数字会静默地剥掉零。第二,超过 2^53 - 1(9007199254740991)的整数也会保留为字符串,以避免 IEEE 754 精度损失。ISO 日期字符串(如 2026-05-09T10:00:00Z)会刻意保留为字符串 — JSON 没有原生的日期类型,强制转换会生成无法在序列化中存活的 JavaScript Date 对象。
为什么大整数会保留为字符串?
JavaScript 的 Number 类型使用 IEEE 754 双精度,只能精确表示最高到 2^53 - 1(9007199254740991)的整数。真实世界的标识符 — Twitter snowflake ID、Discord ID、MongoDB Long 字段、K8s resourceVersion — 都是超出此安全范围的 64 位整数。如果解析器对这些值调用 Number(),结果会被静默四舍五入(9007199254740993 会变成 9007199254740992)。「推断类型」流水线会检测安全整数边界以上的值,将其保留为字符串,让数字保持完整。输出下方会出现警告横幅,列出受影响的字段。要在代码中精确转换回去,请对 JSON 字符串值使用 BigInt("9007199254740993")。
我的 CSV 使用分号 — 该如何解析?
欧洲 Excel 区域设置(德国、法国、西班牙、意大利等)会输出分号分隔的 CSV,因为逗号被保留作小数分隔符。点击分隔符行上的 `;` 按钮(或打开完整选项面板并选择 `;`),解析器会立即切换到分号模式。这类文件中带逗号小数的数值(1234,56)会被「推断类型」保留为字符串,因为欧洲小数表示法是区域特定的 — 如需数值,请在代码中转换。解析器仍会以新的分隔符应用 RFC 4180 引号规则,因此带引号的字段中包含分号也能被正确处理。
支持 TSV(制表符分隔)吗?
支持。点击分隔符行上的 Tab 按钮,解析器会按制表符而不是逗号切分。TSV 是跨区域共享 CSV 时最干净的格式,因为制表符不太可能出现在文本字段中,从而消除了大多数引号边界情况。它是 Unix 工具(cut、awk)和数据仓库(BigQuery、Snowflake)的默认输出,并且在任何区域设置下的 Excel 都能良好支持。直接粘贴 .tsv 或 .tab 文件内容 — 解析器的其余功能(自动命名表头、类型推断、大整数检测)行为完全一致。
如果我的 CSV 没有表头行怎么办?
在选项面板中关闭「首行为表头」。解析器会将首行视为数据而不是列名,并自动生成键:col1、col2、col3 等,每列一个。输出 JSON 是以这些合成键命名的对象数组。这适用于省略表头的数据库原始导出、固定格式的扁平文件以及机器生成的 CSV。如果你想用不同的键名,先用自动命名转换,然后在下游流水线(jq、JavaScript map 等)中重命名键。工具不会从数据启发式推断键 — 关闭「首行为表头」始终生成 col1、col2、col3。
能处理含内嵌逗号的带引号字段吗?
可以。解析器是真正的 RFC 4180 状态机:遇到开始的双引号时,它会切换到 QuotedField 状态,将后续内容视为单个字段直到遇到下一个未转义的双引号,包括分隔符和内嵌行结尾(CR/LF)。转义的双引号(加倍,如 "")会被正确折叠为单个引号。这意味着 `"Smith, Jr."` 解析为一个字段 `Smith, Jr.`,而 `"He said ""hi"""` 解析为 `He said "hi"`。简单的按逗号分割解析器会在这类真实数据上崩溃;本工具不会。
为什么我的日期被保留为字符串?
这是有意为之。JSON 没有原生的日期类型 — 只有字符串、数字、布尔值、null、数组和对象。ISO 8601 日期字符串(如 2026-05-09T10:00:00Z)会原样保留为 JSON 输出中的字符串,这是正确且无损的表示。如果解析器将其强制转换为 JavaScript Date 对象,序列化所得的 JSON 会产生不同的输出(一个无法回溯的对象,或是丢失时区信息的数字时间戳)。请将日期作为字符串保留在 JSON 中,使用时再用 new Date(value) 或你选择的日期库进行解析。这与所有主流的 CSV 转 JSON 流水线(Pandas、jq、Python 的 csv + json 模块)行为一致。
如果各行长度不同会发生什么?
形状不一致的行(部分行的列数比表头多或少)会被填充以匹配表头长度。超过表头列数的额外单元格会被丢弃,缺失的单元格会被设为空字符串(或在开启「推断类型」且解析器看到空值时设为 null)。输出下方会出现 Schema notes 警告,告知你这些行已被规范化。对于使用键并集的下游工具,这通常没问题,但如果你的消费方期望严格的行形状一致性,请验证输出。最常见的原因是部分行末尾有多余逗号,或带引号字段中的内嵌行结尾被上游导出器错误计数。
我可以粘贴多大的文件?
超过 100,000 字符或 2,000 行时,实时转换会自动切换到手动模式:信息横幅中会出现「转换」按钮,只有点击时才执行转换。这可以防止浏览器主线程在每次按键时因繁重解析而阻塞。当输出超过 5 MB 或 50,000 行时,工具会将屏幕上的 JSON 预览截断为前 500 行,并显示「显示前 500 行(共 N 行)」横幅 — 但「下载」按钮仍会生成包含全部行的完整文件。输入硬上限为 10 MB;超过此值工具会显示错误并要求你减少输入。
可以进行 JSON → CSV → JSON 往返吗?
可以,前提是 JSON 是扁平的(无嵌套对象或数组)。对于嵌套数据,反向(JSON → CSV)需要使用字符串化模式将数组和对象作为 JSON 保留在单个单元格中 — 这样在开启「推断类型」时通过本 CSV → JSON 转换器可无损往返。点击面板顶部的「交换方向」翻转到 JSON 转 CSV 模式以验证往返。反向中的展平模式是单向的:它生成的点分隔键(customer.address.city)无法被 CSV 完美还原。带完整字符串化支持的反向请参见我们的 JSON 转 CSV 转换器