Use a library like serde with serde_json or sqlx to automatically deserialize database rows into Rust structs by deriving the Deserialize trait.
use serde::Deserialize;
#[derive(Deserialize)]
struct User {
id: i32,
name: String,
email: String,
}
let json = r#"{"id": 1, "name": "Alice", "email": "alice@example.com"}"#;
let user: User = serde_json::from_str(json).unwrap();
For SQL databases, use sqlx to map rows directly:
use sqlx::FromRow;
#[derive(FromRow)]
struct User {
id: i32,
name: String,
email: String,
}
let user = sqlx::query_as::<_, User>("SELECT id, name, email FROM users WHERE id = ?")
.bind(1)
.fetch_one(&mut pool)
.await?;