DT Dev Tools

Convertir JSON a Rust — Generador de structs serde

Convierte JSON a structs de Rust en línea con derives serde Serialize/Deserialize, Option<T> para campos opcionales y nombres snake_case. Gratis, en tu navegador.

🔒 Se ejecuta completamente en tu navegador — nada se sube

Publicidad

Structs de Rust para serde, generadas desde JSON

Serde hace que el JSON en Rust sea rápido y seguro, pero solo cuando ya has escrito structs que coinciden exactamente con los datos. Este conversor de JSON a Rust las escribe por ti. Pega un ejemplo y cada objeto se convierte en una struct que deriva Serialize y Deserialize, las claves pasan a ser nombres de campo snake_case idiomáticos con atributos #[serde(rename)] donde hace falta, los objetos anidados se convierten en structs independientes, los arrays en Vec<T> y los valores que faltan o son null en algún punto del ejemplo se envuelven en Option<T>. Los enteros y los decimales se distinguen como i64 y f64.

El generador está construido sobre quicktype, que combina todos los elementos de cada array antes de elegir un tipo. En Rust esto importa más que en la mayoría de lenguajes: una sola clave inesperada o un solo null hace fallar la deserialización, así que capturar de entrada los campos opcionales ahorra tiempo de depuración.

Visibilidad y derives

Elige la visibilidad de los campos según cómo se vayan a usar los tipos: pub para un crate de modelos compartido, pub(crate) para módulos internos o campos privados si quieres añadir tus propios constructores. Los derives Debug y Clone vienen activados por defecto porque casi todos los modelos los necesitan; desactívalos para una salida más ligera. Activa Skip serializing None para añadir skip_serializing_if y que los campos None desaparezcan del JSON de salida en lugar de escribirse como null. Recuerda añadir serde con la feature derive y serde_json a tu Cargo.toml.

Cómo obtener tipos precisos

Usa un ejemplo con varios elementos por array y campos opcionales rellenos. Los arrays vacíos y los null no aportan información de tipo y recurren a serde_json::Value, que normalmente querrás sustituir. Tras generar, ejecuta rustfmt, revisa el ancho de los enteros (un ID quizá quepa en u32) y convierte en enums, con #[serde(rename_all)], los campos de cadena que tengan un conjunto fijo de valores. Todo se ejecuta en local en tu navegador, así que los payloads privados nunca se suben.

Cómo usar

  1. Pega el JSONPega un documento JSON o haz clic en Load sample.
  2. Ajusta los derivesDefine el nombre de la struct raíz, la visibilidad de los campos y los traits que se derivan.
  3. Copia las structsCopia el código Rust o descarga un archivo .rs y añade serde a Cargo.toml.

Preguntas frecuentes

¿Funciona la salida con serde?
Sí. Las structs derivan Serialize y Deserialize, y los campos llevan #[serde(rename = "...")] siempre que el nombre en Rust difiera de la clave JSON.
¿Cómo se representan los campos opcionales?
Los campos que faltan o son null en algunos ejemplos pasan a ser Option<T>. Marca Skip serializing None para omitirlos al serializar.
¿Puedo cambiar la visibilidad de los campos?
Sí. Elige campos pub, pub(crate) o privados, y activa o desactiva los derives Debug y Clone.
¿Se sube mi JSON?
No. El código se genera en local en tu navegador.
Publicidad