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: Value
The value that was replaced.
Note: serde_json::Value::Null
is utilized if the value did not
previously exist.
created_or_mutated: Pointer
The 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: Pointer
A 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").unwrap();
assert_eq!(assignment.assigned_to, Pointer::try_from("/foo/1").unwrap());