// Cargo.toml:
// serde = { version = "1", features = ["derive"] }
// serde_json = "1"
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct User {
id: u64,
name: String,
email: String,
#[serde(default)]
roles: Vec<String>,
}
fn main() -> Result<(), serde_json::Error> {
// Struct → JSON
let user = User {
id: 42,
name: "Alice".into(),
email: "a@x.com".into(),
roles: vec!["admin".into()],
};
let json = serde_json::to_string_pretty(&user)?;
println!("{json}");
// JSON → Struct
let parsed: User = serde_json::from_str(r#"{
"id": 7, "name": "Bob", "email": "b@x.com"
}"#)?; // roles defaulted to [] thanks to #[serde(default)]
println!("{parsed:#?}");
Ok(())
}
Create a free account and build your private vault. Share publicly whenever you want.