Skip to content

Repository files navigation

crates.iocrates.ioBuildCodecov

json-patch

A JSON Patch (RFC 6902) and JSON Merge Patch (RFC 7396) implementation for Rust.

Usage

Add this to your Cargo.toml:

[dependencies]
json-patch = "*"

Examples

Create and patch document using JSON Patch:

#[macro_use]use json_patch::{Patch, patch};use serde_json::{from_value, json};letmut 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:

#[macro_use]use json_patch::merge;use serde_json::json;letmut 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"}));

License

Licensed under either of

at your option.

Contribution

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.

About

RFC 6902 (JSON Patch) / RFC 7396 (JSON Merge Patch) implementation for Rust

Resources

Stars

179 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages