Net*_*ave 8 json rust rust-chrono serde
我遇到一个有趣的问题。由于某种原因,serde 无法chrono::DateTime<Utc>
从与序列化格式相同的字符串中反序列化对象(但如果我用它保存变量,它就会这样做):
use chrono; // 0.4.11
use serde_json; // 1.0.48
fn main() {
let date = chrono::Utc::now();
println!("{}", date);
let date_str = serde_json::to_string(&date).unwrap();
println!("{}", date_str);
let parsed_date: chrono::DateTime<chrono::Utc> = serde_json::from_str(&date_str).unwrap();
println!("{}", parsed_date);
assert_eq!(date, parsed_date);
let date = "2020-03-28T16:29:04.644008111Z";
let _: chrono::DateTime<chrono::Utc> = serde_json::from_str(&date).unwrap();
}
Run Code Online (Sandbox Code Playgroud)
这是游乐场链接
哪个输出:
Compiling playground v0.0.1 (/playground)
Finished dev [unoptimized + debuginfo] target(s) in 1.01s
Running `target/debug/playground`
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: integer `2020`, expected a formatted date and time string or a unix timestamp", line: 1, column: 4)', src/main.rs:17:44
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Standard Output
2020-03-28 17:57:04.222452521 UTC
"2020-03-28T17:57:04.222452521Z"
2020-03-28 17:57:04.222452521 UTC
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?我应该怎样做呢?
您需要输入有效的 json,不要忘记双引号:
let date = "\"2020-03-28T16:29:04.644008111Z\"";
Run Code Online (Sandbox Code Playgroud)
你可以看到它println!("{:?}", date_str);
归档时间: |
|
查看次数: |
4679 次 |
最近记录: |