JSON 到纯文本:去掉语法,保留内容
在文本编辑器中打开 JSON 导出并计算实际存在的内容。大括号、方括号、 每个键和每个字符串值上都有双引号,每对后面有一个逗号,中间有冒号, 在一个打印精美的文件中,有数千个前导空格。在典型的创纪录的出口中, 大部分字节是结构字符,不携带您关心的信息。
这个页面做了一件事:它需要一个 .json 文件并返回人类可读的
对所有这些都删除感到满意。没有标题,没有表格,没有管道——只有值,按顺序,
有足够的标签以保持有意义。当目的地是一个时,这是正确的输出
嵌入模型、搜索索引、文本分析脚本或任何标点符号所在的管道
噪音。免费,无需注册,最多 50 MB,不存储任何内容。
什么被移除,什么幸存
这些规则很简单,可以牢记在心,当您决定是否要这样做时,这一点很重要 输出将适合您的管道:
- 走了: 每个
{,},[,], 引号、逗号和冒号。还有缩进,在打印精美的文件中可以是 占总大小的比例令人惊讶。 - 保留: 字符串值、数字、布尔值——有效负载。
- 保留,但扁平化: 关键名称。它们只是作为简短的标签而不是
直接删除了,因为
refund_reason句子前面是真心实意的 为读者和嵌入模型提供信息。消失的是嵌套路径,而不是 名字。 - 折叠:
null、空字符串和空数组。在原始 JSON 中 每条记录中都会重复这些内容;在文本输出中它们停止占用 空间。 - 线性化: 嵌套深度。下六级的值和顶部的值 水平最终成为兄弟线。这就是交易——你失去树木来换取清洁 散文。
为什么语法会损害嵌入
在这种情况下,转换不仅更整洁,而且还改变了结果。当你嵌入一大块 文本,模型对其中的所有内容进行编码。向其提供原始 JSON 记录和其中有意义的块 Vector 描述了它看到 JSON 的事实——大括号、带引号的键、数据的一般形状 结构。关于完全不同主题的两条记录最终可能在向量空间中靠近在一起 因为他们共享一个模式。
去掉语法,嵌入就是关于内容的。支持票证成为客户的 实际的单词加上一些标签,对其进行语义搜索的行为就像您期望的那样。 对短记录的影响最强,其中语法与内容的比率最差 - 具有两个单词值的五字段对象主要是标点符号。
同样的逻辑也适用于分块。原始 JSON 对固定大小的分块器不利,因为会出现分割 中间对象并产生一个孤立的括号片段。平面文本按句子和行分割 分块者假设的边界方式。
搜索索引和文本分析
全文搜索引擎会在单词边界上进行标记,然后无论如何都会丢弃标点符号 - 但是 并不总是干净利落,也不总是在它扭曲了你的术语统计数据之前。索引预剥离 text 为您提供可预测的术语频率并阻止分析器浪费工作。
对于任何统计数据来说,论据都更有力。词频计数、情感评分 产品评论的导出、支持票证转储的主题建模、命名实体提取 一个被抓取的数据集——所有这些都被结构标记和你不知道的字段污染了 想要算。一个 JSON 到可读文本转换器 run 给你一个语料库而不是 一个数据结构。
如果可以的话,在分析之前值得删除:ISO 时间戳、UUID 和数字 ID。他们标记化 变成毫无意义的碎片,出现在每一条记录上,这正是 会扭曲频率表的东西。
代币预算争论
如果您要在模型上进行大量导出,则平面文本是相同内容的最便宜的表示形式 内容。有两件事推动了节约。首先,结构特征。第二——这是 记录较多的文件中较大的一个 - 您不再需要为每个对象上的密钥重复付费。一个 一千条记录,每条重述八个字段名称,带有八千个冗余标签 在原始文件中。
令牌计数器位于输出下方,因此您可以在粘贴到任何地方之前进行转换和检查。 在缩小的 API 转储和 NDJSON 日志文件中,差异往往很大。也就是说,如果 你接近限制的原因是文件确实很大,没有任何转换可以拯救你 - 首先过滤您需要的记录,然后进行转换。
当纯文本是错误的选择时
诚实地对待这一点比假装皈依总是获胜更有用。模型读取原始数据 JSON 流利;这是他们见过最多的格式之一。有以下三种情况你 不应该剥离它:
- 您正在根据数据生成代码。 类型定义、解析器、映射 函数、验证模式——所有这些都需要精确的键名、精确的嵌套和精确的 类型。粘贴原始有效负载或其修剪后的示例。压扁扔掉东西 模型需求。
- 嵌套是有含义的。 如果某个值位于哪一个父级下是重点 — 每个角色的权限、每个环境的设置、类别树——扁平化破坏了 回答。使用 JSON 至 Markdown 相反,它将层次结构保留为标题并变成统一的记录 数组转换成可扫描的表。
- 一个人会去读它。 平面文本针对机器进行了优化。对于人类 回顾一下,Markdown 彻底获胜。
此页面顶部的格式切换在两者之间移动并保持文件处于选中状态,因此 比较只需单击一次,而不是第二次上传。
尴尬的文件及其行为
- Unicode 转义。 由旧库编写的文件将非 ASCII 编码为
\u00e9而不是角色本身。这些解码回真实的字母,这很重要 如果您的数据不是英文。 - Base64 斑点。 嵌入图像、PDF 或附件走私到 JSON 字段中 巨大且包含零可读文本。在上传之前将它们删除,否则它们会 主导文件大小和令牌数量。
- 在 JSON 中转义了 JSON。 常见于 webhook 有效负载和日志行 — 字符串 其内容本身就是序列化对象的字段。它就像一个长期逃脱的人一样出现 字符串。如果该字段是您真正想要的部分,请先解开该字段。
- 格式错误的文件。 尾随逗号、单引号、Python 风格
None或NaN。这些完全解析失败。如果文件的来源不清楚,请先对文件进行 Lint 检查。 - JSON 行。 NDJSON 导出在这里运行良好 — 统一记录,每行一个,
已经接近你想要的形状了。重命名为
.json或将行包装在数组中 上传之前。
常见问题解答
如何将 JSON 文件转换为 txt 文件?
放下 .json 输入上面的转换器,值会以可读文本的形式返回,并删除大括号、方括号、引号、逗号和冒号。下载为 .txt。免费,无需注册,每个文件 50 MB,之后不存储任何内容。
为什么将 JSON 转换为文本而不是仅仅使用 JSON?
因为语法字符对于任何读取意义而不是结构的东西来说都是沉重的负担。嵌入模型、分类器和全文索引对每个引号和逗号进行标记,在不添加信息的情况下稀释向量并增加成本。如果您的消费者解析 JSON,请保留 JSON — 这是为了不解析 JSON 的管道。
它会展平嵌套对象和数组吗?
是的。嵌套是一个结构事实,而结构就是它所剥离的内容,因此深度嵌套的记录以文档顺序中的标签值的平坦运行形式到达。键保留为标签,因此值保持可解释,但不表示它们之间的父子关系。深度嵌套的配置是最受伤害的地方。
它可以处理 JSON Lines 或 NDJSON 吗?
仅当文件整体上是有效的 JSON 时。 NDJSON 是每行一个对象,没有包装数组,故意不是单个 JSON 文档,因此它不会解析为一个。将线条包裹起来 [ ] 首先用逗号分隔——单行 jq 或 sed 工作 - 并且它可以正常转换。
那么大量出口呢?
每个文件的上限为 50 MB,这是大量的 JSON — 打印精美的导出大部分都是空格和结构,因此内部的可读内容只是文件大小的一小部分。如果您已经超过了,请使用以下命令过滤您需要的记录 jq 在转换之前而不是任意分割并丢失包装数组。
相关转换器
如果您的 JSON 实际上是一张穿着服装的表格,请将其导出为 CSV 并使用 CSV 到文本 给了一个清洁工 结果。对于具有不同形状的相同问题的其他结构化格式,有 XML 到文本,并为保存的 页面, HTML 到文本。 File2Txt 接受任何支持的 如果您不想选择页面,请选择格式。
如果该文件是项目中的多个文件之一,则单独转换它可能是错误的单位 工作。的 本地目录转换器 和 GitHub 到文本转换器 让你 选择 JSON 以及一次性读取它的代码。对于实时页面, Web2Txt 直接抓取 URL, 和 指南 为法学硕士准备文件 涵盖了一般情况。
Repo2Txt 由以下人员构建和维护 v12hero, 一位独立开发人员,构建隐私优先的本机和网络应用程序。