15 个版本 (5 个稳定)
2.0.0 | 2024年5月6日 |
---|---|
1.4.0 | 2024年5月6日 |
1.2.0 | 2023年10月9日 |
1.0.0 | 2023年3月31日 |
0.2.1 | 2017年11月3日 |
#50 in 编码
948,597 每月下载量
用于 311 个crate (49 个直接使用)
39KB
685 行
json-patch
Rust 的 JSON Patch (RFC 6902) 和 JSON Merge Patch (RFC 7396) 实现。
使用方法
将以下内容添加到您的 Cargo.toml
[dependencies]
json-patch = "*"
示例
使用 JSON Patch 创建和修补文档
#[macro_use]
use json_patch::{Patch, patch};
use serde_json::{from_value, json};
let mut doc = json!([
{ "name": "Andrew" },
{ "name": "Maxim" }
]);
let p: Patch = from_value(json!([
{ "op": "test", "path": "/0/name", "value": "Andrew" },
{ "op": "add", "path": "/0/happy", "value": true }
])).unwrap();
patch(&mut doc, &p).unwrap();
assert_eq!(doc, json!([
{ "name": "Andrew", "happy": true },
{ "name": "Maxim" }
]));
使用 JSON Merge Patch 创建和修补文档
#[macro_use]
use json_patch::merge;
use serde_json::json;
let mut doc = json!({
"title": "Goodbye!",
"author" : {
"givenName" : "John",
"familyName" : "Doe"
},
"tags":[ "example", "sample" ],
"content": "This will be unchanged"
});
let patch = json!({
"title": "Hello!",
"phoneNumber": "+01-123-456-7890",
"author": {
"familyName": null
},
"tags": [ "example" ]
});
merge(&mut doc, &patch);
assert_eq!(doc, json!({
"title": "Hello!",
"author" : {
"givenName" : "John"
},
"tags": [ "example" ],
"content": "This will be unchanged",
"phoneNumber": "+01-123-456-7890"
}));
许可协议
根据您的选择,许可协议为
- Apache 许可证第 2 版 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则您提交给作品中的任何贡献,如 Apache-2.0 许可证中定义,应如上所述双重许可,不附加任何额外的条款或条件。
依赖项
~1–2MB
~42K SLoC