Rust使用quick_xml序列化OffsetDateTime时出现+00前缀问题求助
序列化OffsetDateTime时出现多余"+00"前缀问题
我完全搞不懂为什么结构体中的OffsetDateTime序列化后会被添加"+00"前缀。
以下是最小复现代码:
/* [dependencies] quick-xml = { version = "0.29.0", features= [ "serialize" ] } serde = { version = "1.0.147", features = [ "derive" ] } time = { version = "0.3.17", features = [ "serde", "parsing", "formatting" ] } */ use serde::{Serialize}; use time::OffsetDateTime; use quick_xml::se::Serializer; use time::format_description::well_known::iso8601::Iso8601; #[derive(Serialize)] #[serde(rename_all = "camelCase")] pub struct Wrapper { #[serde(with = "time::serde::iso8601")] pub time: OffsetDateTime, } fn main() { let mut buf = String::new(); let ser = Serializer::with_root(&mut buf, Some("FooBar")).unwrap(); let ts = Wrapper { time: OffsetDateTime::parse("2010-01-01T00:00:00Z", &Iso8601::DEFAULT).unwrap(), }; ts.serialize(ser).unwrap(); println!("{}", buf); }
我的结构体注解如下:
#[derive(Serialize)] #[serde(rename_all = "camelCase")] pub struct Wrapper { #[serde(with = "time::serde::iso8601")] pub time: OffsetDateTime, }
但最终得到的结果字符串是:
+002010-01-01T00:00:00.000000000Z
这会不会是quick_xml的bug?我已经开始排查quick_xml的代码,但希望有遇到过该问题的人能提供帮助。
内容的提问来源于stack exchange,提问作者clo_jur
相关产品推荐
相关产品推荐

