DocumentsImagesMédiasOutils PDF

JSON en Rust Struct en Ligne

Génère des structs Rust avec serde depuis un JSON, gratuit, dans ton navigateur.

Processed in your browser

De JSON à Rust Struct avec serde

Compatible avec l'écosystème serde

Génère des structs prêts à utiliser avec serde_json, reqwest, Actix-web, Axum et n'importe quel crate de l'écosystème Rust.

100 % privé

Ton JSON ne quitte jamais ton navigateur. Aucune inscription, aucune télémétrie, aucun envoi à des serveurs.

Conventions Rust correctes

snake_case automatique, Option<T> pour les nullables, types numériques corrects (i64, f64). Code idiomatique.

Instantané

Structs générés en temps réel. Aucun bouton, aucune attente, aucune limite.

Trois étapes, sans complications

1

Colle ton JSON

Colle le JSON à modéliser. Ça peut être un objet imbriqué, un tableau ou n'importe quelle structure JSON valide.

2

Génération instantanée

L'outil génère automatiquement des structs Rust avec les dérivations serde, en respectant les conventions snake_case.

3

Copie le code

Copie le code généré et ajoute la dépendance serde dans ton Cargo.toml pour l'utiliser directement.

Des questions ?

serde (serialization/deserialization) est le framework de sérialisation le plus populaire de l'écosystème Rust. Il convertit des structs Rust vers et depuis des formats comme JSON, YAML, TOML, MessagePack, CBOR et bien d'autres. La clé de serde est qu'il utilise des macros à la compilation, ce qui signifie un overhead nul à l'exécution : le code généré est aussi efficace que si tu avais écrit la sérialisation manuellement.

La macro #[derive(Serialize, Deserialize)] en Rust indique au compilateur de générer automatiquement l'implémentation des traits Serialize et Deserialize de serde pour le struct. Cela élimine le besoin d'écrire du code de sérialisation manuellement. C'est équivalent à implémenter une interface, mais le code est généré à la compilation via des macros procédurales.

Le snake_case est la convention de nommage officielle de Rust pour les variables, les champs de structs et les fonctions (définie dans les Rust API Guidelines). Cependant, les API REST retournent souvent du JSON en camelCase. serde gère cette incompatibilité automatiquement avec l'attribut #[serde(rename_all = "camelCase")] au niveau du struct, ou #[serde(rename = "fieldName")] par champ individuel.

En Rust, il n'existe pas de null — on utilise à la place le type Option<T>, qui peut être Some(valeur) ou None. Quand un champ JSON peut être null ou absent, le type Rust correspondant est Option<T>, par exemple Option<String> ou Option<i64>. serde désérialise automatiquement null comme None et ignore les champs avec None lors de la sérialisation (avec #[serde(skip_serializing_if = "Option::is_none")]).

Ajoute ces lignes à ton Cargo.toml : serde = { version = "1.0", features = ["derive"] } et serde_json = "1.0". La feature "derive" active les macros #[derive(Serialize, Deserialize)]. serde_json fournit serde_json::from_str() pour la désérialisation et serde_json::to_string() pour la sérialisation. Ce sont parmi les crates les plus téléchargés de l'écosystème Rust.

Rust, langage le plus apprécié de Stack Overflow, l'écosystème serde et WebAssembly avec Rust

Rust a été élu langage de programmation le plus aimé dans le Stack Overflow Developer Survey pendant 9 années consécutives (2016-2024). Cette popularité vient de sa proposition unique : la sécurité mémoire sans garbage collector, des performances comparables à C/C++, et un système de types qui prévient à la compilation des classes entières de bugs comme les déréférencements de pointeur null, les data races et les dépassements de tampon. De plus en plus de projets dans les systèmes critiques, les CLI et les services haute performance migrent vers Rust.

serde est le pilier de la sérialisation en Rust. Avec plus de 300 millions de téléchargements sur crates.io, c'est l'une des dépendances les plus omniprésentes de l'écosystème. Ce qui rend serde spécial, c'est son architecture de data model agnostique au format : les structs s'implémentent une seule fois contre le data model abstrait de serde, et les formats (JSON, YAML, TOML, Bincode, MessagePack, etc.) implémentent leur propre adaptateur. Cela signifie que passer de JSON à MSGPACK dans un projet Rust est souvent aussi simple que changer un crate.

WebAssembly (Wasm) est un autre domaine où Rust excelle. Avec wasm-bindgen et wasm-pack, tu peux compiler du code Rust en WebAssembly et l'exécuter dans le navigateur avec des performances proches du natif. serde_json fonctionne sur les cibles Wasm sans modification. Des projets comme Figma (son moteur de rendu), Cloudflare Workers et des parties de Firefox sont écrits en Rust. L'outil sur convertir.ai utilise une technologie similaire : traitement côté client sans envoyer de données à un serveur.