let {{ name }}_str = match jstring_to_string(env, {{ name }}) {
Ok(s) => s,
Err(e) => { throw_jni_error(env, &format!("{e}")); return {{ ret_null }}; }
};
{% if is_optional %}
let {{ name }}: Option<{{ type_path }}> = if {{ name }}_str.is_empty() {
None
} else {
match serde_json::from_str::<{{ type_path }}>(&{{ name }}_str) {
Ok(v) => Some(v),
Err(e) => { throw_jni_error(env, &format!("deserialize: {e}")); return {{ ret_null }}; }
}
};
{% else %}
let {{ name }}: {{ type_path }} = match serde_json::from_str(&{{ name }}_str) {
Ok(v) => v,
Err(e) => { throw_jni_error(env, &format!("deserialize: {e}")); return {{ ret_null }}; }
};
{% endif %}