use serde::Serialize;
pub fn query_params<T: Serialize>(obj: T) -> anyhow::Result<Vec<(String, String)>> {
let value = serde_json::to_value(obj)?;
if let serde_json::Value::Object(map) = value {
let result: Vec<(String, String)> = map.into_iter().filter_map(|(k, v)| {
match v {
serde_json::Value::Null => None,
serde_json::Value::String(s) => Some((k, s)),
_ => Some((k, v.to_string())),
}
}).collect();
Ok(result)
} else {
anyhow::bail!("The value is not an object!");
}
}