Sqlx 类型序列化问题

前两天在使用 sqlx 中的 types::chrono::NaiveDate 时遇到了一个小问题;我定义了一个结构对应了数据库中的某个结构(方便 query_as 的直接转换),并且我希望这个结构体可以直接被 serde 序列化为 JSON 格式进行输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#[derive(FromRow, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub username: String,
pub gender: String,
pub email: String,
pub reg_date: sqlx::types::chrono::NaiveDate,
pub recently: sqlx::types::chrono::NaiveDate,
pub password: String,
pub salt: String,
pub introduction: String,
pub avatar: String,
pub role: i32,
}

因为我们这里使用的 chrono 来自于 sqlxfeautres = ['chrono'],它并没有实现 serde 的相关 trait,导致我们无法将次结构进行序列化。后来再查阅了一些资料后发下,只需要在 Cargo.toml 中添加一条 chrono 的引入,并且开启相关 features 即可:

1
chrono =  { version = "0.4.15", features = ["serde"] }

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!