Skip to main content
CheckTown
数据工具

CSV 转 JSONL 转换器:创建 JSON Lines 文件

发布于 阅读约 5 分钟
本文目录

什么是 JSON Lines?

JSON Lines(也称 JSONL 或换行分隔 JSON,NDJSON)是一种文本格式,其中每一行都是一个有效的 JSON 对象。常规 JSON 会把所有内容包在一个数组里,而 JSONL 则每行放一条记录,没有外层括号。这使它非常适合流式处理、追加写入以及逐行处理大型数据集。

一个典型的 JSONL 文件是这样的:每一行都包含一个完整的 JSON 对象,带有各自的键和值。行与行之间没有逗号,也没有外层数组。正是这种简洁性,让该格式在数据管道、日志文件和机器学习数据集中大显身手。

为什么 JSONL 很重要

在现代数据工程和云平台中,JSONL 已成为若干重要场景的首选格式。

  • 流式处理——由于每一行都相互独立,你可以逐行处理文件而无需把整个数据集加载到内存中,这对多 GB 的文件至关重要
  • BigQuery 和云端导入——Google BigQuery、Amazon Athena 以及其他云数据仓库原生支持用 JSONL 加载数据,使其成为云端数据导入的标准格式
  • 机器学习数据集——包括 Hugging Face、OpenAI 微调和 BERT 训练在内的许多 ML 框架,都要求数据采用 JSONL 格式,每行一个样本
  • 日志文件和事件流——应用日志常使用 JSONL,因为新事件可以直接追加到文件末尾,无需修改已有内容或维护数组语法

免费试用 —— 无需注册

将 CSV 转换为 JSONL →

将 CSV 转换为 JSONL

将 CSV 转换为 JSONL 时,会把 CSV 文件中的每一行映射为一个 JSON 对象,列标题则成为其中的键。

  • 标题作为键——CSV 文件的第一行为每个 JSON 对象提供属性名,因此列标题应当干净且一致
  • 分隔符检测——转换器可处理逗号、分号、制表符和竖线分隔符,能自动检测格式,也允许你显式指定
  • 类型推断——数值会转换为 JSON 数字而非字符串,空单元格则可根据你的偏好输出为 null 或完全省略

常见问题

JSONL 和常规 JSON 有什么区别?

常规 JSON 会把所有记录包在一个用方括号括起来的数组中,并用逗号分隔。JSONL 则每行放一个 JSON 对象,没有数组外壳,记录之间也没有逗号。这意味着你可以在不修改已有内容的情况下向 JSONL 文件追加数据,无需完整解析器即可逐行处理,也无需缓冲整个文件即可流式传输。

什么时候该用 JSONL 而不是 CSV?

当你的数据包含嵌套结构、列不一致,或需要被 API 和云服务使用时,请使用 JSONL。CSV 更适合将在电子表格中打开的简单表格数据。JSONL 会保留数据类型(数字、布尔值、null),而 CSV 把所有内容都当作文本。JSONL 还能处理包含逗号和换行符的值,而不会遇到转义问题。

我应该使用什么文件扩展名?

最常见的扩展名是 .jsonl 和 .ndjson。有些工具也接受每行一个对象的 .json。为清晰起见,建议使用 .jsonl,因为它能立刻告诉查看文件的人这是换行分隔的格式,而非标准 JSON。BigQuery 和大多数云工具三种扩展名都接受。

JSONL 文件可以流式处理吗?

可以,这正是 JSONL 的主要优势之一。由于每一行都独立且自成一体,你可以在任何编程语言中用简单的按行读取逻辑,一次读取并处理一行。这使 JSONL 非常适合处理大到无法装入内存的数据集,而常规 JSON 则需要解析完整的数组结构。

相关工具