Data Studio
在 JSON、YAML、TOML、CSV 和 Markdown 之间转换结构化文本。 所有处理都在本地完成,不会上传任何内容。
- 输入
- JSON · JSONL · YAML · TOML · CSV · TSV · Markdown
- 输出
- JSON · JSONL · YAML · TOML · CSV · TSV · HTML
源文档
JSON · 320 B
结果
YAML
一棵树,六种格式
每一次转换都会先把源文档解析成一棵统一的类型化树,再把这棵树按目标格式写出来。正因如此,往返转换才靠得住:数字仍是数字,嵌套结构得以保留,对象的键保持书写时的顺序,而不会被悄悄按字母排序。这也是为什么新增一种格式只需要一个解析器加一个序列化器,而不是为每一对格式组合都写一套特例。
各种格式的长处
- JSON
- 默认的数据交换格式。完整保留嵌套结构和类型。
- YAML
- 适合配置文件,也支持注释,但注释不会随转换保留。
- TOML
- 根节点必须是表。null 会被丢弃——TOML 没有这种值。
- CSV
- 可直接用于电子表格。需要对象数组;嵌套的值会变成 JSON 单元格。
- TSV
- 以制表符分隔的 CSV。数据里逗号很多时更稳妥。
- JSONL
- 每行一个文档。日志流水线和 LLM 数据集使用的格式。
那些棘手的边缘情况,我们是有意这样处理的
- CSV 没有类型。 只有当把某个数字打印回去能与原文完全一致时,单元格才会被当作数字,因此
007保持为字符串,而12则变成数字。 - CSV 没有嵌套。 从嵌套数据写出表格时,嵌套的值会以 JSON 的形式留在单元格里,而不是发明一套之后还得由你自己反解的扁平化规则。
- TOML 没有 null。 值为 null 的键会被丢弃,而不是让整个文档转换失败;根节点不是对象的源文档会被直接拒绝——TOML 的根必须是一个表。
- 注释不是数据。 YAML 和 TOML 的注释存在于树之外,因此无法在转换中保留。没有任何办法能把它们带过去。
常见问题
- 如何把 JSON 转成 YAML,或把 YAML 转成 JSON?
- 粘贴或拖入文档,确认自动识别的输入格式,然后选择输出格式。两个方向都经过同一棵类型化树,因此嵌套、数字和布尔值都能完整保留。
- CSV 转 JSON 时,前导零会保留吗?
- 会。只有当把某个数字打印回去能与原文完全一致时,单元格才会被转换成数字,因此像 007 这样的 ID 会保持为字符串 "007",而 12 则变成数字 12。
- JSON 的键顺序会保留吗?
- 会。对象的键保持文档中的原有顺序,不会被按字母排序,因此输出结果仍可与源文件直接做差异比较。
- 为什么转换成 TOML 失败了?
- TOML 的顶层必须是一个表,因此数组或单独的值无法表示。TOML 也没有 null:值为 null 的键会被丢弃,而不是让整个文档转换失败。
- 什么是 JSONL?什么时候该用它?
- JSONL(也叫 NDJSON)每行放一个紧凑的 JSON 文档。日志流水线和机器学习数据集都在用它,因为读取方可以逐条流式处理,而不必先解析整个文件。