Macro json_syntax::json
source ยท macro_rules! json { (@array [$($elems:expr,)*]) => { ... }; (@array [$($elems:expr),*]) => { ... }; (@array [$($elems:expr,)*] null $($rest:tt)*) => { ... }; (@array [$($elems:expr,)*] true $($rest:tt)*) => { ... }; (@array [$($elems:expr,)*] false $($rest:tt)*) => { ... }; (@array [$($elems:expr,)*] $lit:literal $($rest:tt)*) => { ... }; (@array [$($elems:expr,)*] [$($array:tt)*] $($rest:tt)*) => { ... }; (@array [$($elems:expr,)*] {$($map:tt)*} $($rest:tt)*) => { ... }; (@array [$($elems:expr,)*] $next:expr, $($rest:tt)*) => { ... }; (@array [$($elems:expr,)*] $last:expr) => { ... }; (@array [$($elems:expr),*] , $($rest:tt)*) => { ... }; (@array [$($elems:expr),*] $unexpected:tt $($rest:tt)*) => { ... }; (@object [$($elems:expr,)*] () () ()) => { ... }; (@object [$($elems:expr),*] () () ()) => { ... }; (@key ($key:literal)) => { ... }; (@key ($key:expr)) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (: null $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (: true $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (: false $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (: $lit:literal $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (: [$($array:tt)*] $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (: {$($map:tt)*} $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (: $next:expr, $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (: $last:expr) $copy:tt) => { ... }; (@object [$($elems:expr),*] () (, $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) (:) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)+) () $copy:tt) => { ... }; (@object [$($elems:expr,)*] () (: $($rest:tt)*) ($colon:tt $($copy:tt)*)) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)*) (, $($rest:tt)*) ($comma:tt $($copy:tt)*)) => { ... }; (@object [$($elems:expr,)*] () (($key:expr) : $($rest:tt)*) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)*) (: $($unexpected:tt)+) $copy:tt) => { ... }; (@object [$($elems:expr,)*] ($($key:tt)*) ($tt:tt $($rest:tt)*) $copy:tt) => { ... }; (null) => { ... }; (true) => { ... }; (false) => { ... }; ($lit:literal) => { ... }; ([]) => { ... }; ([ $($tt:tt)+ ]) => { ... }; ({}) => { ... }; ({ $($tt:tt)+ }) => { ... }; ($other:expr) => { ... }; }
Expand description
Constructs a json_syntax::Value
from a JSON literal.
let value = json!({
"code": 200,
"success": true,
"payload": {
"features": [
"json",
"syntax"
]
}
});
Variables or expressions can be interpolated into the JSON literal.
let code = 200;
let features = vec!["json", "syntax"];
let value = json!({
"code": Value::from(code),
"success": Value::from(code == 200),
"payload": {
Key::from(features[0]): Value::from(features[1])
}
});
Trailing commas are allowed inside both arrays and objects.
let value = json!([
"notice",
"the",
"trailing",
"comma -->",
]);