-
Notifications
You must be signed in to change notification settings - Fork 80
Improper deserialization for #[serde(flatten)] field #159
Copy link
Copy link
Open
Labels
Description
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, PartialEq)]
pub struct Outer {
value_a: i32,
#[serde(flatten)]
inner: Inner,
}
#[derive(Serialize, Deserialize, PartialEq)]
pub struct Inner {
value_b: i32,
}
fn main() {
let params = Outer {
value_a: 3,
inner: Inner { value_b: 6 },
};
let ser_params = serde_qs::to_string(¶ms).unwrap();
assert_eq!("value_a=3&value_b=6", &ser_params);
let output = serde_qs::from_str::<Outer>(&ser_params);
let Err(serde_qs::Error::Custom(error)) = output else {
unreachable!()
};
assert_eq!(error, r#"invalid type: string "6", expected i32"#)
}Only Strings and Option<String>s appear to be supported in flattened structures :(
This might be a related issue of #153 and hence serde-rs/serde#1183. Let me know how I can help if it is possible to fix!
Reactions are currently unavailable