Expand description
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};
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:
#[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"
}));Re-exports§
pub use jsonptr;
Structs§
- AddOperation
 - JSON Patch ‘add’ operation representation
 - Copy
Operation  - JSON Patch ‘copy’ operation representation
 - Move
Operation  - JSON Patch ‘move’ operation representation
 - Patch
 - Representation of JSON Patch (list of patch operations)
 - Patch
Error  - This type represents all possible errors that can occur when applying JSON patch
 - Remove
Operation  - JSON Patch ‘remove’ operation representation
 - Replace
Operation  - JSON Patch ‘replace’ operation representation
 - Test
Operation  - JSON Patch ‘test’ operation representation
 
Enums§
- Patch
Error Kind  - This type represents all possible errors that can occur when applying JSON patch
 - Patch
Operation  - JSON Patch single patch operation
 
Functions§
- diff
 - Diff two JSON documents and generate a JSON Patch (RFC 6902).
 - merge
 - Patch provided JSON document (given as 
serde_json::Value) in place with JSON Merge Patch (RFC 7396). - patch
 - Patch provided JSON document (given as 
serde_json::Value) in-place. If any of the patch is failed, all previous operations are reverted. In case of internal error resulting in panic, document might be left in inconsistent state. - patch_
unsafe  - Patch provided JSON document (given as 
serde_json::Value) in-place. Different frompatchif any patch failed, the document is left in an inconsistent state. In case of internal error resulting in panic, document might be left in inconsistent state.