Struct jsonptr::Assignment
source · pub struct Assignment<'a> {
pub assigned: Cow<'a, Value>,
pub replaced: Value,
pub created_or_mutated: Pointer,
pub assigned_to: Pointer,
}Expand description
The data structure returned from a successful call to assign.
Fields§
§assigned: Cow<'a, Value>The value that was assigned.
In the event a path is created, this will be the serde_json::Value
encompassing the new branch.
replaced: ValueThe value that was replaced.
Note: serde_json::Value::Null is utilized if the value did not
previously exist.
created_or_mutated: PointerThe path which was created or replaced.
For example, if you had the json { "foo": { "bar": "baz" } } and you
assigned "new_value" to "/foo/qux/quux", then created_or_mutated
would be Some("/foo/qux") as "qux" is the top-level value assigned.
The resulting json would have the following structure:
{
"foo": {
"bar": "baz",
"qux": {
"quux": "new_value"
}
}
}
Note: if a portion of the path contains a leaf node that is to be overridden by an object or an array, then the path will be leaf that is replaced.
For example, if you had the json:
{ "foo:" "bar" }
and you assigned "new_value" to "/foo/bar/baz", then the value would
be Some("/foo/bar").
assigned_to: PointerA Pointer consisting of the path which was assigned.
Example
use serde_json::json;
use jsonptr::{Pointer, Assign};
let mut data = json!({ "foo": ["zero"] });
let mut ptr = Pointer::try_from("/foo/-").unwrap();
let assignment = data.assign(&mut ptr, "one".into()).unwrap();
assert_eq!(assignment.assigned_to, Pointer::try_from("/foo/1").unwrap());