命令行 JSON 文件处理工具,支持 patch、diff、merge、validate、flatten 操作。完全实现 RFC 6902 JSON Patch 规范。
npm install -g @mazhu/jsonpatchjsonpatch patch <file> --ops '[{"op":"add","path":"/name","value":"test"}]'支持的 JSON Patch 操作(RFC 6902):
add- 在指定路径添加值remove- 移除指定路径的值replace- 替换指定路径的值move- 从一个路径移动值到另一个路径copy- 复制值到新路径test- 测试路径上的值
示例:
# 添加字段
jsonpatch patch data.json --ops '[{"op":"add","path":"/name","value":"test"}]'
# 替换值
jsonpatch patch config.json --ops '[{"op":"replace","path":"/version","value":"2.0.0"}]'
# 删除字段
jsonpatch patch data.json --ops '[{"op":"remove","path":"/temp"}]'
# 多个操作
jsonpatch patch data.json --ops '[{"op":"add","path":"/name","value":"test"},{"op":"remove","path":"/temp"}]'生成两个 JSON 文件之间的 JSON Patch 差异:
jsonpatch diff old.json new.json示例:
jsonpatch diff v1.json v2.json -o changes.json深度合并两个 JSON 对象:
jsonpatch merge base.json override.json示例:
jsonpatch merge defaults.json config.json -o merged.json验证 JSON 文件语法:
jsonpatch validate <file>示例:
jsonpatch validate config.json
# 输出: ✓ config.json is valid JSON将嵌套 JSON 对象扁平化为点记法:
jsonpatch flatten <file>示例:
输入:
{
"user": {
"name": "Alice",
"address": {
"city": "Beijing"
}
}
}输出:
{
"user.name": "Alice",
"user.address.city": "Beijing"
}-o, --output <file>- 输出到文件(默认输出到 stdout)-h, --help- 显示帮助信息-v, --version- 显示版本号
JSON Patch 使用 JSON Pointer (RFC 6901) 路径语法:
/- 根对象/foo- 对象的foo属性/foo/bar- 嵌套路径/foo/0- 数组索引/-- 数组末尾(仅用于 add 操作)
特殊字符转义:
~0表示~~1表示/
MIT
Mike Wang (迈克王)