A crate for parsing and using JSON pointers, as specified in RFC 6901.
JSON pointers can be created with a literal [&str]
, or parsed from a String
.
```rust
let from_strs = JsonPointer::new([
"foo",
"bar",
]);
let parsed = "/foo/bar".parse::
asserteq!(fromstrs.tostring(), parsed.tostring()); } ```
The JsonPointer
type provides .get()
and .get_mut()
, to get references
and mutable references to the appropriate value, respectively.
```rust
let ptr = "/foo/bar".parse::
let document = json!({ "foo": { "bar": 0, "baz": 1, }, "quux": "xyzzy" });
let indexed = ptr.get(&document).unwrap();
assert_eq!(indexed, &json!(0)); ```
JSON Pointers can be embedded in the fragment portion of a URI. This is the
reason why most JSON pointer libraries require a #
character at the beginning
of a JSON pointer. The crate will detect the leading #
as an indicator to
parse in URI Fragment Identifier Representation. Note that this means that this
crate does not support parsing full URIs.
```rust
let strptr = "/f%o".parse::
asserteq!(strptr, uri_ptr); ```