一些简短的上下文:我们将 uuid 存储在我们的数据库中;这些功能作为 id。我们希望将这些以 base62 编码表示形式呈现给各种 http 客户端。理想情况下,我们不必记住每次编码结构时都这样做。值得注意的是,我们还利用sqlx并通过query_as!
. 例如:
#[derive(Debug, Deserialize, FromRow, Serialize)]
pub struct Widget {
pub id: Uuid,
pub name: String,
}
然后后来:
let widget = query_as!(Widget, r#"select * from widgets where id = $1"#, id).fetch_one(db_conn).await?;
理想情况下,我们希望利用相同的结构将数据发送到客户端,并且在从网络中提取数据时也是如此。我们还想在这样做时转换 id(在接收时从 base62 编码转换为 uuid,在发送时从 uuid 转换为 base62 编码)。
我们如何在继续利用这些结构的同时专门控制 JSON 序列化和反序列化的行为?