Data structures and logic for resolving, assigning, and deleting by JSON Pointers (RFC 6901).
JSON Pointers can be created either with a slice of strings or directly from a properly encoded string representing a JSON Pointer.
```rust use jsonptr::{Pointer}; use jsonptr::prelude::*; // for Assign, Resolve, ResolveMut, Delete traits use serde_json::{json, Value};
fn main() { let mut data = json!({ "foo": { "bar": "baz" } });
let ptr = Pointer::new(&["foo", "bar"]);
ptr.resolve(&data);
let bar = data.resolve(&ptr).unwrap();
assert_eq!(bar, "baz");
let ptr = Pointer::try_from("/foo/bar").unwrap();
let mut bar = data.resolve_mut(&ptr).unwrap();
assert_eq!(bar, "baz");
}
```
```rust use jsonptr::{Pointer}; use serde_json::{json, Value};
fn main() { let ptr = Pointer::tryfrom("/foo/bar").unwrap(); let mut data = json!({}); let val = json!("qux"); let assignment = ptr.assign(&mut data, val); asserteq!(data, json!({ "foo": { "bar": "qux" }})) } ```