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.
- Categoría
- Herramientas de desarrollo
- Se ejecuta
- En tu navegador
- Coste
- Gratis · sin registro
- Disponibilidad
- Lista para usar
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
- Pega una muestra JSON, preferiblemente un array con varios registros representativos.
- Asigna un nombre al tipo de nivel superior y elige si los campos None deben omitirse al serializar.
- 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