Serde y JSON
11 pasos en 5 series de Rust.
Serde es la razón por la que serializar en Rust es un derive y no una tarea pesada. Primero derivar, luego los atributos de campo que salvan la distancia entre los nombres de tu struct y como sea que el JSON de verdad los llame.
Después las formas: estructuras anidadas, enums como uniones etiquetadas, colecciones. Y al final implementaciones personalizadas y cómo se ve el fallo, porque la entrada real viene malformada más seguido de lo que los ejemplos sugieren.
Derivar
- Derivar Serialize y DeserializeDos derives y un struct se vuelve JSON en ambas direcciones.
- JSON sin tipos con ValueCuando la forma es desconocida, Value y la macro json! la manejan dinámicamente.
- Mapas y viajes de ida y vueltaSerializar un mapa y luego leerlo de vuelta en el mismo tipo.
Atributos de campo
- Renombrar camposLos nombres en Rust siguen en snake_case y el JSON conserva lo que la API espere.
- Campos opcionales y por defectoClaves ausentes, valores null y campos que preferirías no emitir en absoluto.
- Aplanar y capturar extrasflatten funde un struct anidado en el padre, o barre las claves desconocidas.
Formas
- Estructuras anidadasStructs dentro de vectores dentro de structs — serde sigue el árbol completo.
- Enums y etiquetadoCómo cruza el cable un enum: con etiqueta interna, sin etiqueta o como cadena simple.
Personalización y fallos
- Conversiones de campo personalizadasserialize_with y deserialize_with le entregan un campo a tu propia función.
- Manejar errores de serdeUna falla de parseo te dice qué quería, y dónde se rindió.
Bis
- api_models.rsUn juego completo de modelos para un payload de API: parsear, validar, resumir.