// Created on savesnippets.com · https://savesnippets.com/RvcnmsaWh6mr8T // 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, } 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(()) }