A JSON Patch (RFC 6902) and JSON Merge Patch (RFC 7396) implementation for Rust.
Add this to your Cargo.toml:
toml
[dependencies]
json-patch = "*"
Create and patch document using JSON Patch:
```rust
use jsonpatch::{Patch, patch}; use serdejson::{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" } ]));
```
Create and patch document using JSON Merge Patch:
```rust
use jsonpatch::merge; use serdejson::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" })); ```
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.