Développeur / Types
Convertisseur JSON vers struct Rust
Transformez un exemple JSON en structs Rust dérivées de Serialize et Deserialize de serde, avec des champs en snake_case, des renommages, Option pour les clés absentes ou null et Vec pour les tableaux.
Convertisseur JSON vers struct Rust: Chaque objet devient une struct avec des champs publics. Les clés sont converties en snake_case, avec #[serde(rename = "…")] lorsque leur écriture JSON diffère. Les mots-clés Rust, comme type, deviennent des identifiants bruts (r#type), que serde remappe automatiquement. Les clés absentes ou null dans certains enregistrements deviennent des Option<T>, tandis que les valeurs dont le type n’est pas clairement identifiable deviennent des serde_json::Value. La sortie pour plusieurs échantillons a été compilée et son échantillon a été désérialisé avec serde 1. Fonctionne 100 % localement dans votre navigateur, sans aucun téléversement de fichier vers le serveur.
- Catégorie
- Outils développeur
- Exécutions
- Dans votre navigateur
- Coût
- Gratuit · sans inscription
- Disponibilité
- Prêt à l'emploi
Fonctionne entièrement dans votre navigateur
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>;
Nécessite les crates serde (avec la fonctionnalité derive) et serde_json. Les noms de champs deviennent des noms en snake_case, avec #[serde(rename)] lorsque la clé diffère ; les clés absentes ou null dans certains objets deviennent Option. Les nombres sont i64, sauf si un exemple contient une fraction.
Lire et écrire les données
Désérialisez avec serde_json::from_str::<Root>(&text)? et sérialisez avec serde_json::to_string(&value)?. Les clés inconnues de l’entrée sont ignorées par défaut ; ajoutez #[serde(deny_unknown_fields)] à une structure pour les refuser.
Pour le même exemple en Go, consultez JSON vers Go ; pour nettoyer d’abord l’exemple, utilisez le formateur JSON.
Option et clés manquantes
Une clé manquante et une valeur null sont toutes deux désérialisées en None pour un champ Option. Si vous devez les distinguer, utilisez Option<Option<T>> avec la crate serde_with, ou conservez serde_json::Value pour ce champ.
Comment l'utiliser
- Collez un exemple JSON, de préférence un tableau contenant plusieurs enregistrements représentatifs.
- Nommez le type de niveau supérieur et choisissez si les champs None doivent être omis lors de la sérialisation.
- Copiez les structs dans votre crate, qui doit inclure serde et serde_json.
Confidentialité et limitations
Le JSON est converti dans votre navigateur et n’est jamais téléversé.
Outils associés
Questions fréquentes
De quelles crates ai-je besoin ?
De serde avec la fonctionnalité derive, et de serde_json : serde = { version = "1", features = ["derive"] } et serde_json = "1" dans Cargo.toml.
Pourquoi i64 et f64 ?
Ils permettent de contenir n’importe quel nombre JSON en toute sécurité. Utilisez des types plus précis, comme u32, u8 ou f32, lorsque vous connaissez la plage de valeurs.
Puis-je utiliser #[serde(rename_all)] à la place ?
Oui : si toutes les clés suivent la même convention, comme camelCase, un #[serde(rename_all = "camelCase")] sur la struct remplace les renommages individuels.
Outil gratuit · dans votre navigateur exécutions · aucun compte requis