macro_rules! set {
    () => { ... };
    ($a:expr $(,)*) => { ... };
    ($a:expr, $b:expr $(,)*) => { ... };
    ($a:expr, $b:expr, $c:expr $(,)*) => { ... };
}
Expand description

Based on set()

Examples:

#[macro_use] extern crate serde_json_lodash;
use serde_json::json;

let object = json!({
  "a": [{ "b": { "c": 3 } }]
});

let object = set!(object, json!("a[0].b.c"), json!(4));
assert_eq!(
  object["a"][0]["b"]["c"],
  json!(4)
);

let object = set!(object, json!(["x", "0", "y", "z"]), json!(5));
assert_eq!(
  object["x"][0]["y"]["z"],
  json!(5)
);

More examples:

assert_eq!(set!(), json!(null));
assert_eq!(set!(json!(5)), json!(5));
assert_eq!(
  set!(json!({}), json!("1[1].a"), json!(5)),
  json!({"1":[null,{"a":5}]})
);