Desarrollador / Tipos

Convertidor de JSON a structs de Rust

Convierte una muestra JSON en structs de Rust con derives de Serialize y Deserialize de serde, campos snake_case, renombres, Option para claves ausentes o nulas y Vec para arrays.

Convertidor de JSON a structs de Rust: Cada objeto se convierte en un struct con campos públicos. Las claves se convierten a snake_case, con #[serde(rename = "…")] cuando su escritura en JSON es diferente. Las palabras clave de Rust, como type, se convierten en identificadores sin formato (r#type), que serde vuelve a mapear automáticamente. Las claves ausentes o nulas en algunos registros se convierten en Option<T>, y los valores cuyo tipo no está claro se convierten en serde_json::Value. La salida para varias muestras se compiló y se deserializó con su muestra mediante serde 1. Funciona al 100 % en tu navegador, sin subir archivos a ningún servidor.

Se ejecuta
En tu navegador
Coste
Gratis · sin registro
Disponibilidad
Lista para usar
JSON a RustProcesamiento local

Funciona por completo en tu navegador

Rust

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Address {
    pub city: String,
    pub zip_code: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
    pub id: i64,
    pub user_name: String,
    pub avatar_url: String,
    pub score: f64,
    pub tags: Vec<String>,
    pub address: Address,
    pub manager_id: Option<i64>,
    #[serde(default)]
    pub nickname: Option<String>,
}

pub type UserList = Vec<User>;

Necesita los crates serde (con la característica derive) y serde_json. Los nombres de los campos se convierten a snake_case con #[serde(rename)] cuando la clave es diferente; las claves que faltan o son null en algunos objetos se convierten en Option. Los números son i64, salvo que un ejemplo tenga una fracción.

Lectura y escritura de los datos

Deserializa con serde_json::from_str::<Root>(&text)? y serializa con serde_json::to_string(&value)?. Las claves desconocidas de la entrada se ignoran de forma predeterminada; añade #[serde(deny_unknown_fields)] a una estructura para rechazarlas.

Para ver el mismo ejemplo en Go, consulta JSON a Go; para dar formato al ejemplo antes, usa el formateador JSON.

Option y claves ausentes

Tanto una clave ausente como un valor null se deserializan como None en un campo Option. Si necesitas distinguirlos, usa Option<Option<T>> con el crate serde_with o conserva serde_json::Value para ese campo.

Cómo se usa

  1. Pega una muestra JSON, preferiblemente un array con varios registros representativos.
  2. Asigna un nombre al tipo de nivel superior y elige si los campos None deben omitirse al serializar.
  3. Copia los structs en tu crate, que necesita serde y serde_json.

Privacidad y límites

El JSON se convierte en tu navegador y nunca se sube.

Herramientas relacionadas

Preguntas frecuentes

¿Qué crates necesito?

serde con la función derive y serde_json: serde = { version = "1", features = ["derive"] } y serde_json = "1" en Cargo.toml.

¿Por qué i64 y f64?

Pueden contener de forma segura cualquier número JSON. Usa u32, u8 o f32 si conoces el rango.

¿Puedo usar #[serde(rename_all)] en su lugar?

Sí: si todas las claves siguen la misma convención, como camelCase, un #[serde(rename_all = "camelCase")] en el struct reemplaza los renombres individuales.

Herramienta gratuita · se ejecuta en tu navegador · sin cuenta