Convertidor de JSON a struct de Rust
Pega JSON y obtén structs serde de Rust idiomáticos al instante, 100% en tu navegador. Tipado correcto i64/u64/f64, Option para null, #[serde(rename)] para camelCase. Gratis.
Opciones
¿Qué es la conversión de JSON a Rust?
La conversión de JSON a Rust transforma una muestra JSON en structs de Rust listos para compilar con las macros #[derive(Serialize, Deserialize)] de serde, para que nunca escribas a mano el código repetitivo de deserialización de respuestas de API o archivos de configuración. Este generador rápido de structs de Rust infiere los tipos numéricos correctos, marca los campos ausentes como Option y añade #[serde(rename)] para las claves que no están en snake_case — todo al 100% en tu navegador.
Ejemplos
Respuesta de API
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
Un payload REST típico se convierte en un struct listo para serde que puedes integrar en tu cliente. Los números se infieren como i64, los arrays se convierten en Vec<String>.
Objeto anidado
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
Los objetos anidados se convierten en structs separados y con nombre (Owner) referenciados por campo — las formas idénticas se deduplican.
Array de objetos (campo opcional)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
Los arrays de objetos se fusionan en un único struct de elemento. Las claves ausentes en algunos elementos se convierten en Option<String> — sin necesidad de #[serde(default)].
Claves en camelCase
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
Los campos se convierten en snake_case con #[serde(rename)] que remite a la clave JSON original. Las claves que ya están en snake_case como login no reciben rename.
Cómo convertir JSON a Rust
- 1
Pega tu JSON
Suelta un objeto JSON, un array o una respuesta de API en el campo de entrada. La conversión empieza al instante.
- 2
Ajusta la salida
Renombra el struct raíz y activa las derivaciones de serde, Debug y Clone, o la visibilidad pub para adaptarlo al estilo de tu crate.
- 3
Copia o descarga
Toma el Rust generado con un clic y pégalo directamente en tu proyecto.
Common Use Cases
- Clientes de API tipados
- Convierte una respuesta de ejemplo REST o GraphQL en structs de serde para un cliente reqwest o similar sin escribir a mano el código de deserialización.
- Análisis de configuración y fixtures
- Genera structs para archivos de configuración JSON, fixtures de prueba o payloads de webhooks que necesitas deserializar con serde_json.
- Prototipado rápido
- Pega un payload desconocido para ver al instante su forma como tipos de Rust — una forma rápida de explorar una nueva API antes de integrarla.
Cómo funciona la conversión
- Inferencia estructural
- Cada objeto se convierte en un struct con nombre; las formas idénticas se deduplican para que obtengas un solo struct, no copias. Los arrays de objetos se fusionan clave a clave, y las claves ausentes en algunos elementos se convierten en Option<T>.
- Tipado numérico correcto
- Los enteros se asignan a i64, ascienden a u64 más allá de i64::MAX, y recurren a f64 más allá de u64. Los flotantes se detectan a partir del token (1.0, 2e3) para que la deserialización de serde nunca falle por un flotante en un campo entero.
- Identificadores idiomáticos y compilables
- Las claves se convierten en campos snake_case con #[serde(rename)] de vuelta a la clave original; las palabras clave de Rust, los nombres duplicados y las claves que no son identificadores se sanean para que la salida siempre compile.
- 100% del lado del cliente
- El análisis y la generación se ejecutan en tu navegador sin llamadas de red, por lo que tus datos siguen siendo privados.
Consejos para structs de Rust limpios
- Nombra tu struct raíz
- Define un nombre raíz significativo (p. ej. User, ApiResponse) en lugar del Root predeterminado para un código legible.
- Añade serde_json solo cuando sea necesario
- serde_json::Value aparece para arrays vacíos o de tipos mixtos y campos que solo son null. Da a esos campos un tipo concreto a partir de una muestra más rica si puedes, o añade serde_json a Cargo.toml.
- Revisa Option frente a requerido
- Los campos se marcan como Option<T> solo cuando una muestra los omite. Pega un payload representativo para que la herramienta infiera con precisión los campos requeridos y opcionales.
Preguntas frecuentes
¿Cómo convierto JSON a un struct de Rust?
¿Genera derivaciones de serde? ¿Necesito serde y serde_json?
¿Cómo uso el struct generado para analizar JSON?
¿Cómo se gestionan los campos opcionales y null?
¿Cómo gestiona las claves camelCase y las palabras clave de Rust?
¿Puede usar #[serde(rename_all)] en lugar de renombrados por campo?
¿Qué tipo numérico de Rust utiliza?
¿Cómo se tipan las fechas y las marcas de tiempo?
¿Cómo gestiono objetos con claves dinámicas o desconocidas?
¿Mis datos JSON son privados y seguros?
¿Puedo generar structs de Rust simples sin serde?
¿La herramienta es gratis? ¿Necesito una cuenta?
Herramientas relacionadas
Ver todas las herramientas →Decodificador y Codificador Base64
Codificación y Formato
Decodifica y codifica Base64 online de forma gratuita. Conversión en tiempo real con soporte completo de UTF-8 y emojis. 100% privado — funciona en tu navegador. Sin registro.
Conversor de Base64 a Imagen
Codificación y Formato
Decodifica una cadena Base64 o data URI de vuelta a una imagen en tu navegador. Previsualiza, lee dimensiones y MIME, luego descarga como PNG, JPG, GIF, SVG. Sin subir.
Convertidor de CSV a JSON
Codificación y Formato
Convierte CSV a JSON en tu navegador. RFC 4180, inferencia de tipos, fila de cabecera, seguro para big-int. 100% privado, sin carga.
Conversor de .env a JSON
Codificación y Formato
Pega un archivo .env y obtén JSON al instante. Tus contraseñas, claves API y tokens nunca salen del navegador: 100% privado, sin subidas, gratis.
Decodificador de entidades HTML gratuito — Desescapar HTML
Codificación y Formato
Decodifica entidades HTML y desescapa HTML online: gratis, sin registro, 100 % en tu navegador. Convierte referencias nombradas, decimales y hex de vuelta en caracteres; nunca se sube.
Codificador de entidades HTML gratuito — Escapar HTML
Codificación y Formato
Codifica entidades HTML y escapa caracteres especiales (< > & " ') online: gratis, sin registro, 100 % en tu navegador. Salida con nombre, decimal o hex; nunca se sube.