Acerca de Generar Struct Rust desde JSON
Pega un objeto JSON y obtén definiciones de struct Rust con #[derive(Serialize, Deserialize)] al instante.
Preguntas frecuentes
¿Qué es la generación de structs Rust desde JSON?
La generación de structs Rust desde JSON analiza una muestra de JSON y produce definiciones de structs Rust con macros derive de serde Deserialize y Serialize. Se añaden atributos #[serde(rename)] cuando el nombre del campo Rust difiere de la clave JSON.
¿Qué crates debo añadir a Cargo.toml para la deserialización de JSON con serde?
Añade serde = { version = "1", features = ["derive"] } y serde_json = "1" a tu sección [dependencies]. La característica derive habilita los macros #[derive(Deserialize, Serialize)]. Ejecuta cargo build y la struct generada con esos derives deserializará JSON mediante serde_json::from_str(&json_string).unwrap().
¿Cómo gestiona serde los campos JSON opcionales o ausentes en Rust?
Los campos tipados como Option<T> se establecen en None cuando la clave está ausente o el valor es null en el JSON. Los campos tipados como T (no opcionales) provocan un error de deserialización si están ausentes. Usa #[serde(default)] para recurrir a la implementación Default del tipo en lugar de lanzar un error en claves ausentes.
¿Cómo renombro campos camelCase de JSON a campos snake_case de Rust?
Añade #[serde(rename_all = "camelCase")] a nivel de struct para mapear automáticamente todas las claves camelCase del JSON a campos snake_case de Rust. Para campos individuales, usa #[serde(rename = "claveOriginal")]. El generador añade atributos de renombrado por campo de forma predeterminada; sustitúyelos por rename_all para un código más limpio si todas las claves siguen la misma convención.
¿Puedo derivar tanto Serialize como Deserialize en la misma struct de Rust?
Sí. #[derive(Serialize, Deserialize)] añade ambas direcciones con una sola línea. Esto significa que la struct puede usarse tanto para decodificar JSON entrante (from_str) como para codificar JSON saliente (to_string). Añade también los derives Clone y Debug para un uso ergonómico en la mayoría de las aplicaciones.
Advertisement300 × 250
Advertisement300 × 250