Skip to content

deepdadou/jsonpatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

@mazhu/jsonpatch

命令行 JSON 文件处理工具,支持 patch、diff、merge、validate、flatten 操作。完全实现 RFC 6902 JSON Patch 规范。

安装

npm install -g @mazhu/jsonpatch

命令

patch - 应用 JSON Patch

jsonpatch 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"}]'

diff - 生成差异

生成两个 JSON 文件之间的 JSON Patch 差异:

jsonpatch diff old.json new.json

示例:

jsonpatch diff v1.json v2.json -o changes.json

merge - 深度合并

深度合并两个 JSON 对象:

jsonpatch merge base.json override.json

示例:

jsonpatch merge defaults.json config.json -o merged.json

validate - 验证 JSON

验证 JSON 文件语法:

jsonpatch validate <file>

示例:

jsonpatch validate config.json
# 输出: ✓ config.json is valid JSON

flatten - 扁平化 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 (迈克王)

About

JSON Patch CLI - diff, merge, validate, flatten with RFC 6902 support

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors