Expand description
§Delete values based on JSON Pointers
This module provides the Delete trait which is implemented by types that
can internally remove a value based on a JSON Pointer.
The rules of deletion are determined by the implementation, with the
provided implementations ("json" & "toml") operating as follows:
- If the
Pointercan be resolved, then theValueis deleted and returned asSome(value). - If the
Pointerfails to resolve for any reason,Ok(None)is returned. - If the
Pointeris root,valueis replaced:"json"-serde_json::Value::Null"toml"-toml::Value::Table::Default
This module is enabled by default with the "delete" feature flag.
§Usage
Deleting a resolved pointer:
use jsonptr::{Pointer, delete::Delete};
use serde_json::json;
let mut data = json!({ "foo": { "bar": { "baz": "qux" } } });
let ptr = Pointer::from_static("/foo/bar/baz");
assert_eq!(data.delete(&ptr), Some("qux".into()));
assert_eq!(data, json!({ "foo": { "bar": {} } }));Deleting a non-existent Pointer returns None:
use jsonptr::{ Pointer, delete::Delete };
use serde_json::json;
let mut data = json!({});
let ptr = Pointer::from_static("/foo/bar/baz");
assert_eq!(ptr.delete(&mut data), None);
assert_eq!(data, json!({}));Deleting a root pointer replaces the value with Value::Null:
use jsonptr::{Pointer, delete::Delete};
use serde_json::json;
let mut data = json!({ "foo": { "bar": "baz" } });
let ptr = Pointer::root();
assert_eq!(data.delete(&ptr), Some(json!({ "foo": { "bar": "baz" } })));
assert!(data.is_null());§Provided implementations
| Lang | value type | feature flag | Default |
|---|---|---|---|
| JSON | serde_json::Value | "json" | ✓ |
| TOML | toml::Value | "toml" |
Traits§
- Delete
- Delete is implemented by types which can internally remove a value based on a JSON Pointer