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.

Exécutions
Dans votre navigateur
Coût
Gratuit · sans inscription
Disponibilité
Prêt à l'emploi
JSON vers RustTraitement local

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

  1. Collez un exemple JSON, de préférence un tableau contenant plusieurs enregistrements représentatifs.
  2. Nommez le type de niveau supérieur et choisissez si les champs None doivent être omis lors de la sérialisation.
  3. 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