gron 可抓取JSON扁平化工具
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/gron-greppable-json-flattener。
技能介绍
为什么直接 grep JSON 会翻车
日常排查接口返回、配置快照或日志导出时,我们经常面对动辄几 MB、嵌套七八层的 JSON。grep '"status"' data.json 看似简单,实际会命中大量“包含该字段”的父级对象与兄弟节点,输出里夹杂着你并不关心的整棵子树。jq 当然能精确过滤,但每类查询都要临时拼一套 filter 语法,脚本越长越像另一种维护负担。
核心思路:先把 JSON 摊平
gron 的做法很直接——把 JSON 转换成逐行的赋值语句:
- 每个叶子路径输出一行,形如
meta.servers[0].port = 8080 - 字段路径与数组下标都变成正则可直接匹配的普通字符串
- 此时
grep '"port"' out.txt得到的是精确的路径集合,而非模糊命中 - 筛选后的文件交给
ungron,即可还原为合法 JSON
它不发明新语法,而是让 grep、awk、sed、sort 这套标准 Unix 工具链重新适配 JSON 场景。
适用边界与注意点
- SKILL.md 中未能自动提取来源仓库的安装与使用说明,敏感流程前建议先通读上游项目
- 超大输入摊平后的行数可能远超原 JSON 体积,需留意磁盘与内存占用
- 还原依赖
gron/ungron成对使用,中途改写路径表达式可能带来语义漂移
使用场景
- 排查接口返回时,在多层嵌套的超大 JSON 响应中 grep 出特定字段路径,避免命中无关子树。
- 从服务器配置快照中筛出所有含指定端口的条目,再用 ungron 把过滤结果还原成合法 JSON 交给下游消费。
- 导出的设备日志 JSON 过于臃肿,需要按字段路径批量检索并配合 sort、awk 做聚合统计。
适合人员
- 后端工程师,线上接口返回动辄几 MB 且嵌套极深,需要快速定位单个字段的取值来源。
- 运维工程师,面对批量服务器配置快照,要用 grep 精确筛出含特定配置项的机器清单。
- 数据分析工程师,日志导出是嵌套 JSON,需要在不改写脚本的前提下复用熟悉的 Unix 工具链。