#json #pointers #toolkit #ext #utils #serde-json

json-toolkit

An utility library providing pointer facilities and extending 3rd-parties JSON types

2 releases

0.1.1 Aug 24, 2022
0.1.0 Aug 24, 2022

#1272 in Encoding

MIT license

33KB
562 lines

crates.io MIT licensed Documentation CI codecov

json-toolkit

The json-toolkit crate exposes all the common manipulation/validation operation expected from a JSON pointer and support several JSON value representation :

  • Encode RFC6901 representation in Pointer type.
  • Manipulate any JSON value by a JSON pointer.
use json_toolkit::{ValueExt, Pointer};
use serde_json::{Value, json};

let mut json = json!({ "foo": "bar", "zoo": { "id": 1 } });

json.insert_at(&Pointer::new("/zoo/new_field").unwrap(), "new_value").unwrap();
assert_eq!(json, json!({ "foo": "bar", "zoo": { "id": 1, "new_field": "new_value" } }));

let old_value = json.insert("foo".to_string(), 42).unwrap();
assert_eq!(old_value, Some("bar".into()));
assert_eq!(json, json!({ "foo": 42, "zoo": { "id": 1, "new_field": "new_value" } }));

let id = ValueExt::pointer(&json, &Pointer::new("/zoo/id").unwrap());
assert_eq!(id, Some(&1.into()));

Features

json-toolkit supports several JSON value representation, and has features that may be enabled or disabled :

License

Licensed under MIT license (LICENSE or http://opensource.org/licenses/MIT)

Dependencies

~0.3–1MB
~22K SLoC