Hi all,
I'm trying to deserialize a csv with double quotes in the header.
#[derive(Clone, Debug, Deserialize)]
pub struct TestRecord {
#[serde(rename = "a")]
pub code: String,
#[serde(rename = "b")]
pub name: String,
//#[serde(rename = "\x22type\x22 of stuff")]
#[serde(rename = "\"type\" of stuff")]
pub type_of_stuff: String,
#[serde(rename = "c")]
pub c: String,
}
#[test]
pub fn test() {
let data = r#"a;b;"type" of stuff;c
1;2;3;c"#;
let mut rdr = csv::ReaderBuilder::new()
.has_headers(true)
.delimiter(b';')
.flexible(true)
.from_reader(data.as_bytes());
let v = rdr
.deserialize()
.collect::<Result<Vec<TestRecord>, csv::Error>>();
println!("{:#?}", v);
}
I tried \"
and \x22
, same error
Err(
Error(
Deserialize {
pos: Some(
Position {
byte: 22,
line: 2,
record: 1,
},
),
err: DeserializeError {
field: None,
kind: Message(
"missing field `\"type\" of stuff`",
),
},
},
),
)
I tried with csv::ReaderBuilder::new().escape(Some(b'"')).double_quote(false).has_headers(true).delimiter(b';').flexible(true).double_quote(false).from_reader(data.as_bytes());
(or only escape or only double_quote). Same error.
How to do that ?