[go: up one dir, main page]

[][src]Module time::serde::timestamp::option

Treat an Option<OffsetDateTime> as a Unix timestamp for the purposes of serde.

Use this module in combination with serde's #[with] attribute.

When deserializing, the offset is assumed to be UTC.

This example is not tested
use serde_json::json;

#[derive(Serialize, Deserialize)]
struct S {
    #[serde(with = "time::serde::timestamp::option")]
    datetime: Option<OffsetDateTime>,
}

let s = S {
    datetime: Some(date!(2019-01-01).midnight().assume_utc()),
};
let v = json!({ "datetime": 1_546_300_800 });
assert_eq!(v, serde_json::to_value(&s)?);
assert_eq!(s, serde_json::from_value(v)?);

let s = S { datetime: None };
let v = json!({ "datetime": null });
assert_eq!(v, serde_json::to_value(&s)?);
assert_eq!(s, serde_json::from_value(v)?);

Functions

deserialize
serialize