Skip to content

A crate for parsing and using JSON pointers, as specified in RFC 6901.

License

Notifications You must be signed in to change notification settings

remexre/json-pointer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Nathaniel Ringo
Jun 7, 2017
efa205f · Jun 7, 2017

History

25 Commits
May 26, 2017
Jun 7, 2017
Jun 7, 2017
May 26, 2017
May 30, 2017
Jun 1, 2017
May 26, 2017
Jun 6, 2017

Repository files navigation

json-pointer

A crate for parsing and using JSON pointers, as specified in RFC 6901. Unlike the pointer method built into serde_json, this handles both validating JSON Pointers before use and the URI Fragment Identifier Representation.

Build Status crates.io Documentation

Creating a JSON Pointer

JSON pointers can be created with a literal [&str], or parsed from a String.

let from_strs = JsonPointer::new([
    "foo",
    "bar",
]);
let parsed = "/foo/bar".parse::<JsonPointer<_, _>>().unwrap();

assert_eq!(from_strs.to_string(), parsed.to_string());
}

Using a JSON Pointer

The JsonPointer type provides .get() and .get_mut(), to get references and mutable references to the appropriate value, respectively.

let ptr = "/foo/bar".parse::<JsonPointer<_, _>>().unwrap();

let document = json!({
    "foo": {
        "bar": 0,
        "baz": 1,
    },
    "quux": "xyzzy"
});

let indexed = ptr.get(&document).unwrap();

assert_eq!(indexed, &json!(0));

URI Fragment Identifier Representation

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.

let str_ptr = "/f%o".parse::<JsonPointer<_, _>>().unwrap();
let uri_ptr = "#/f%25o".parse::<JsonPointer<_, _>>().unwrap();

assert_eq!(str_ptr, uri_ptr);

About

A crate for parsing and using JSON pointers, as specified in RFC 6901.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages