Structs Rust y Serde
Serde es el estándar de facto para la serialización JSON en Rust. El generador produce definiciones de struct decoradas con #[derive(Debug, Clone, Serialize, Deserialize)] — la combinación de derives más común para structs de datos. Se asume serde_json como runtime, por lo que el código generado funciona con serde_json::from_str y serde_json::to_string directamente.
El mapeo de tipos sigue los idiomas de Rust: las cadenas JSON se convierten en String, los enteros en i64, los decimales en f64, los booleanos en bool y los arrays en Vec<T>. Los objetos anidados generan structs con nombre separadas. Los campos que son null en el JSON o ausentes en algunos objetos del array se tipan como Option<T>, con un atributo #[serde(skip_serializing_if = "Option::is_none")] para omitirlos cuando son None.
Los nombres de campo en Rust usan snake_case, mientras JSON comúnmente usa camelCase. El generador emite #[serde(rename = "originalKey")] en campos cuyo nombre Rust difiere de la clave JSON, y opcionalmente un atributo de contenedor #[serde(rename_all = "camelCase")].
Ownership, lifetimes y rendimiento
La salida por defecto usa tipos String propios para campos de texto, lo que significa que la struct posee todos sus datos y puede moverse y almacenarse libremente. Un modo alternativo "prestado" reemplaza String por &str (con un parámetro de lifetime), evitando la asignación al deserializar desde un buffer ya propio.
Para documentos JSON grandes, serde_json soporta deserialización en streaming via serde_json::Deserializer::from_reader. Las structs generadas son completamente compatibles con streaming ya que el diseño basado en traits de serde es agnóstico a la fuente de datos.
El exhaustivo pattern matching de Rust significa que añadir un nuevo campo a una respuesta JSON no romperá silenciosamente el código existente. El atributo #[serde(deny_unknown_fields)] puede añadirse para capturar claves JSON inesperadas.
Flujos de trabajo de desarrollo Rust
Los desarrolladores backend Rust que usan Axum, Actix-web o Warp necesitan modelos de solicitud y respuesta tipados. El generador produce structs que funcionan directamente con el extractor Json<T> de Axum.
Las herramientas CLI y scripts de procesamiento de datos en Rust a menudo parsean archivos de configuración JSON o respuestas de API. El generador bootstrapea las definiciones de struct para que puedas concentrarte en la lógica de negocio.
Los proyectos WebAssembly (WASM) que llaman a APIs de JavaScript a menudo reciben datos JSON. Las structs serde generadas son compatibles con wasm-bindgen y serde-wasm-bindgen.