Clean JSON 工具包
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_15292d5a/yjkj-clean-json-toolkit。
技能介绍
要解决什么问题
API 响应、配置文件和 JSONL 事件流都是嵌套 JSON:路径深、类型杂、文件大时,用 python -m json.tool 或临时脚本往往只能「漂亮打印」,很难系统回答「这条记录里到底有哪些字段、各出现多少次、某路径下取值长什么样」。若再叠加 jq 依赖、jsonschema 安装或要在 CI 里做合并/补丁,运维和 Agent 流水线里的摩擦会明显变大。
clean-json-toolkit 是 clean-* 系列里专门处理 JSON/JSONL 的一员:与 csv、text、log 工具包一样,纯 Python 3 标准库,不 eval、不 subprocess、不远程调用,路径查询走自研 tokenizer,并遵循与同系列一致的 safe-path 策略。
核心能力怎么组织
脚本按「看清结构 → 取数 → 变形 → 约束 → 组合变更」排列:
scripts/inspect.py:对.json/.jsonl做剖析,输出每条 distinct path 的类型、计数,以及每路径最多 N 个样本值,适合陌生 payload 摸底。scripts/query.py:jq 风格路径(如.key.nested、.key[0]、.[]、.key.[].field);输出--json/--jsonl/--lines/--raw;JSONL 输入默认在顶层逐条迭代。scripts/flatten.py/--unflatten:嵌套对象压成点号键,支持可逆往返。scripts/validate.py:轻量 schema(required、type、min/max、min_length/max_length、enum、regex、item_type、allow_extra)。scripts/merge.py(v0.2.0):多文件合并,策略含deep(默认,数组替换)、shallow、array-concat、array-uniq、array-extend(要求输入均为数组后拼接)——典型场景是 defaults + 用户 + 环境配置级联。scripts/patch.py(v0.2.0):RFC 6902 JSON Patch(add/remove/replace/move/copy/test);可--op --path --value内联或--patch FILE;--strict首错即停,--dry-run只输出不写盘;支持"/items/-"追加数组。
退出码约定:0 成功或有结果;1 无结果/校验失败/空输入;2 参数错误、不安全路径、缺文件、非法 JSON 或 schema 问题。
适用边界
- 不是 jq/jsonschema 的全量替代:查询语法与 schema 能力刻意做小,换的是零 pip、可脚本化、与同系列一致的安全模型。
- validate 的 schema 是内置子集,复杂
$ref、多版本 JSON Schema 草案需另选工具。 - merge 策略要选对:例如
deep下数组合并是替换而非拼接,级联配置常用array-concat或array-extend。 - 可与 clean-csv-toolkit、clean-text-toolkit、clean-log-toolkit 串联:表格、纯文本、带时间戳日志与 JSON 各管一段流水线。
使用场景
- 对接新 REST API 时,先用 `inspect.py` 对样例 `.json`/`.jsonl` 统计各路径类型与样本值,再写 `query.py` 抽取字段。
- 发布流水线里把 defaults、用户覆盖、环境专用三份 JSON 用 `merge.py` 的 `deep` 或 `array-concat` 合成一份可运行配置。
- 从 JSONL 事件导出里用 jq 风格路径(如 `.events.[].user_id`)批量取数,并以 `--jsonl` 或 `--lines` 交给下游脚本。
- 变更配置文件前用 `patch.py` 加载 RFC 6902 操作并 `--dry-run` 预览,确认无误后再写入;门禁阶段用 `validate.py` 校验 required/type/enum。
适合人员
- 维护多环境 JSON 配置级联、需要在 CI 里合并 defaults/用户/环境三层的后端或平台工程师
- 编写 Agent 或自动化流水线、环境只允许 Python 3 标准库、要剖析和查询 API JSON/JSONL 的集成开发同学
- 负责发布值班的 SRE,希望对线上 config 做 RFC 6902 增量变更并能 strict/dry-run 控制失败行为
- 分析第三方 JSONL 事件导出、需先摸清嵌套结构再 flatten 或按路径抽字段的数据/安全分析工程师