macro_rules! gen_json_struct {
($code:literal) => { ... };
(
$code:literal,
$( $opt_k:ident = $opt_v:literal),+ $(,)?
) => { ... };
(
$code:literal;
$( $field_type_name:literal => $field_type:ty ),* $(,)?
) => { ... };
(
$code:literal;
$( $field_opt_name:literal => { $( $field_opt_k:literal : $field_opt_v:tt ),* $(,)? } ),* $(,)?
) => { ... };
(
$code:literal,
$( $opt_k:ident = $opt_v:literal ),+ $(,)?;
$( $field_type_name:literal => $field_type:ty ),* $(,)?
) => { ... };
(
$code:literal,
$( $opt_k:ident = $opt_v:literal ),+ $(,)?;
$( $field_opt_name:literal => { $( $field_opt_k:literal : $field_opt_v:tt ),* $(,)? } ),* $(,)?
) => { ... };
(
$code:literal;
$( $field_type_name:literal => $field_type:ty ),* $(,)?;
$( $field_opt_name:literal => { $( $field_opt_k:literal : $field_opt_v:tt ),* $(,)? } ),* $(,)?
) => { ... };
(
$code:literal,
$( $opt_k:ident = $opt_v:literal ),+ $(,)?;
$( $field_type_name:literal => $field_type:ty ),* $(,)?;
$( $field_opt_name:literal => { $( $field_opt_k:literal : $field_opt_v:tt ),* $(,)? } ),* $(,)?
) => { ... };
}