我的博客使用了Rust中最常用的serde处理数据序列化。由于需要在数据库中读取一些时间字段,并且处理后再传递给js使用,而serde默认是没有对DataTime等时间类型做处理的,此时就需要使用serde提供的扩展宏来使用自定义类型的序列化。这里以NaiveDateTime作为示例记录如何进行自定义类型的序列化。
serde
serde提供了#[serde(with = "xx")]的方式来指定自定义的序列化模块,要注意这里的xx应该是一个模块的路径名,此模块下应该有对应类型的serialize和deserialize函数。
由于我的目的是从数据库中读取2022-10-07 11:29:30这样的时间数据,然后再以时间戳的方式序列化为json值,所以序列化/反序列化的函数实现如下: