This macro reduces boilerplate when using serde_json::Value variants when trying to get into a nested property.
```rs
let designer: Option
println!("Who tf is this designer? {}",designer.unwrapordefault()); ``` or
rs
if let Value::Object(brand) = json_file {
let brand = brand.get("brand").unwrap();
if let Value::Object(tesla) = brand {
let tesla = tesla.get("tesla").unwrap();
if let Value::Object(model) = tesla {
let model = model.get("model").unwrap();
if let Value::String(designer) = model {
println!("Who tf is this designer? {}",designer.to_owned());
}
}
}
}
The macro accepts 3 arguments:
json_serde::Value has the following variants:
The third parameter to pass in the macro is a Rust type, so, things we can pass if we want to get data from some variants:
| Value variant | Rust types |
| ------ | ------ |
| Array | Vec<String>, Vec<bool>, Vec<f64>, Vec<Value>
... |
| Bool | bool
|
| Number | u32, i32, i64, f32, usize
... |
| Object | Value
|
| String | String
|
| Null | not supported |