跳到主要内容

gron 转换器:JSON 转 gron 与 ungron 还原

让 JSON 可以被 grep。json.users[0].name = "Ada"; 每个叶子一行,还能 ungron 原样还原。全程浏览器本地。

  • 本地处理
  • 分类 开发运维
  • 适合 格式化、校验、压缩或检查和代码相关的文本。
把 JSON 转成可 grep 的 gron 行(json.users[0].name = "Ada";),或用 ungron 还原回 JSON。每个叶子一行,可以直接管道给 grep 定位深层的值。字符串保留引号,数字、布尔和 null 不带引号。
方向
根变量名
输入

转换完成

输出
json = {};
json.users = [];
json.users[0] = {};
json.users[0].name = "Ada";
json.users[0].admin = true;
json.count = 1;
json.next = null;

这个工具能做什么

在浏览器里把 JSON 转成 gron 再转回来。gron 来自 Tom Hudson 的 tomnomnom/gron 工具,它把一份 JSON 改写成每行一条赋值语句,例如 json.users[0].name = "Ada"; 左边是从根到某个值的绝对路径,右边是 JSON 字面量。因为每个深层的值都单独成行 并带着完整路径,你可以把输出直接管道给 grep 去定位某个值在哪里,比如 gron data.json | grep name。对象键用点号连接,数组元素用 [下标],不是普通标识符 的键写成 json["weird key"] 这种括号引号形式。字符串保留引号,数字、布尔和 null 不带引号,所以每一行读起来就像真正的赋值。ungron 方向把这些语句读回来,精确重建 原来的 JSON,往返不丢信息。选好根变量名,粘贴,复制即可。全程不上传,JSON 和 gron 输出都不离开这个页面。

工具细节

输入
文本 + 数值
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 9 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
开发运维 · 程序员
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

gron 转换器(JSON 转 gron / ungron 还原) 适合怎么用

适合穿插在写代码、查问题、做 Review、上线前的小任务里。

适合开发场景

  • 格式化、校验、压缩或检查和代码相关的文本。
  • 把片段整理好再放进文档、工单、提交或交接材料。
  • 不切换工具,快速检查一个小 payload。

开发检查项

  • 压缩、混淆这类不可逆处理,先对副本操作。
  • 除非确认工具本地处理,不要粘贴密钥和敏感片段。
  • 转换后的代码上线前,仍要跑自己的测试或 lint。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 JSON 差异对比 结构化 JSON 对比:按键路径标出新增/删除/修改,三色差异树,浏览器本地 打开
  2. 2 JSON Lines 格式化工具 按行校验 JSONL, 格式化、转 JSON 数组, 或导出 CSV-like 表格, 全部本地运行。 打开
  3. 3 JSON 扁平化 / 还原 嵌套 JSON 拍平成点号键,再还原回嵌套。分隔符和数组风格可选,类型不变,纯浏览器本地。 打开

真实使用场景

  • 从巨大的 API 响应里 grep 出一个深层的值

    接口返回一份 4000 行的 JSON,你要的是埋在里面某处的 auth token。把它 粘进来,切到 JSON 转 gron,复制那些行,再对它们跑 grep -i token。不用 在嵌套大括号里翻找,你会直接得到 json.data.session.refresh_token = "eyJ…"; 单独一行带着完整路径。同样的招数能找出每个 URL、每个 id、每个邮箱,grep 关键词,读路径,搞定。

  • 逐行 diff 两份 JSON 文件

    结构化的 JSON 直接 diff 噪声很大,因为格式和键顺序一动,位置全变。把两份 文件都跑一遍 gron,输出是一份扁平、稳定的 路径 = 值 行表,普通的逐行 diff (或 git diff)就能精确显示哪些叶子变了、变在哪。重排过的对象不再像是上百行 改动,只有真正不同的赋值才会冒出来。

  • 用 sed 改一个深埋的值再重建

    你要把 json.config.replicas 从 2 改成 5,但实在不想在三层嵌套里手改这份 配置。把文件 gron 一下,改那一行(手动或用 sed),再 ungron 回成合法、 带缩进的 JSON。路径语法让这次修改毫无歧义,往返过程保证结构被正确重建。

  • 讲解或文档化一个 JSON 结构

    在文档或代码评审里解释一份 API 响应时,一堵大括号会把结构藏起来。gron 的 每一行都把路径写得明明白白,读者看到 json.items[0].price = 9.99; 立刻就知道 结构、类型和每个字段的位置,不用在脑子里解析缩进。

常见踩坑

  • 以为 gron 的输出是合法 JSON。它不是,它是一串赋值语句(json.a = 1;)。要拿回 JSON,把方向切到 ungron,它会解析这些语句并重建对象。别把 gron 行直接喂给 JSON 解析器。

  • 手改 gron 行时把值写成语法不合法。每行右边必须是 JSON 字面量,字符串要带引号(= "5";),裸数字是 = 5;。写成 = 5 abc; 或把字符串的引号去掉,这一行 ungron 时会报值错误。

  • 只在一边改了根变量名。如果你用自定义根 data 做 gron,又去 ungron 仍写着 json 的文本,各自都能跑;但把不同根的行混在一次粘贴里,会被重建到不同的根上。一份文档里根变量名要保持一致。

隐私说明

两个方向(JSON 转 gron 和 ungron 还原回 JSON)都是浏览器标签页里运行的纯 JavaScript。你粘贴的 JSON、生成的 gron 行和重建的输出都不离开页面,也不被记录。 唯一要注意:分享链接会把输入写进查询字符串,所以把链接粘到聊天里,对方服务器的 访问日志会留下这段输入。涉及密钥或私密载荷,请用复制按钮拷文本,而不是分享网址。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-06-13