Omnikit
DevFichiersFinancesTous les outils
Ctrl K
Outils pour développeursOutils pour fichiersCalculateurs financiersTous les outils
AccueilOutils pour développeursConvertisseur JSON en structs Rust
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский

Convertisseur JSON en structs Rust

dev

Transformez un échantillon JSON en structs Rust avec derives serde, renommages, Option et Vec

Fonctionne dans votre navigateur. Rien de ce que vous saisissez n'est envoyé nulle part. Vérifié le 16 octobre 2026.

Collez un échantillon JSON et obtenez des structs Rust avec les derives Serialize et Deserialize de serde. Les nombres entiers deviennent i64 et la moindre décimale rend un champ f64 ; une valeur null ou absente de certains objets devient Option<T>, et les clés écrites autrement que leur champ snake_case reçoivent un rename serde, 1 rename_all quand toutes sont en camelCase.

Cette page a été traduite automatiquement à partir de l'original anglais. Aucune personne n’a encore relu la traduction : c’est la version anglaise qui fait foi. Lire l'original en anglais

Ensuite :
  • JSON vers TypeScript Générez des interfaces ou des types TypeScript à partir d'un exemple JSON
  • Formateur et validateur JSON Formatez, validez, minifiez et triez du JSON avec la position exacte des erreurs

Comment convertir du JSON en struct Rust

1

Collez un échantillon JSON, par exemple une réponse d'API, dans la zone de gauche.

2

Les structs Rust apparaissent pendant la saisie, chacune avec #[derive(Serialize, Deserialize)], des champs en snake_case et les renommages serde nécessaires.

3

Activez Option sur chaque champ ou PartialEq si vous le souhaitez, et indiquez le nom de la struct racine.

4

Cliquez sur Copier, ou sur Télécharger pour enregistrer models.rs, puis ajoutez serde (avec la feature derive) et serde_json à Cargo.toml.

À propos du Convertisseur JSON en structs Rust

Rust décode le JSON avec serde, et chaque objet a besoin d'une struct dont les champs ont les bons types et dont les noms renvoient aux clés JSON. Ce convertisseur écrit ces structs à partir d'un échantillon : une longue réponse d'API devient du Rust qui compile en un seul collage.

Comment les types sont choisis.

Valeur JSON Type Rust
"text" String
true / false bool
42 (nombres entiers uniquement) i64
4.5 (au moins une décimale vue) f64
null, plus un type Option
null seul, ou types mélangés serde_json::Value
[ ... ] Vec<...>
{ } vide Map<String, Value>
{ ... } une struct à part

Clés absentes. Tous les objets d'un tableau sont fusionnés en une seule struct. Une clé que certains omettent devient une Option, car serde traite une Option absente comme None et tout autre champ absent comme une erreur. Ces champs reçoivent aussi skip_serializing_if, si bien que réécrire la struct les omet à nouveau.

Noms. Les champs sont en snake_case. Quand chaque clé est simplement la forme camelCase de son champ, la struct porte un seul rename_all ; sinon chaque champ différent reçoit son propre rename. Les mots-clés deviennent des identifiants bruts comme r#type ; self, super et crate ne peuvent pas être bruts et deviennent donc self_ avec un rename.

Options. Option sur chaque champ convient aux API susceptibles d'omettre n'importe quelle clé. Dériver PartialEq permet aux tests de comparer des valeurs. La struct racine s'appelle Root sauf si vous la nommez.

Chaque résultat a été vérifié en relisant le Rust selon les règles de serde et en décodant 9 échantillons avec. Rien de ce que vous collez ne quitte le navigateur.

Questions fréquentes

Comment convertir du JSON en struct Rust ?

Collez un échantillon JSON dans le convertisseur et les structs Rust apparaissent à côté, chacune dérivant Serialize et Deserialize. Ajoutez serde avec la feature derive et serde_json à Cargo.toml, collez les structs dans un module et décodez avec serde_json::from_str::<Root>(&text).

Quand un champ devient-il Option<T> ?

Un champ devient Option quand l'échantillon le montre à null, ou quand certains objets d'un tableau omettent la clé. Serde décode une clé absente dans une Option en None, alors que tout autre champ absent est une erreur : c'est donc Option qui permet à la struct d'accepter chaque objet de l'échantillon.

Comment les clés JSON en camelCase correspondent-elles aux champs snake_case ?

Les champs sont écrits en snake_case, comme le veut le style Rust. Quand chaque clé est la forme camelCase de son champ, la struct reçoit un seul #[serde(rename_all = "camelCase")] ; sinon chaque champ écrit autrement reçoit son propre #[serde(rename = "key")], si bien que des clés comme first-name ou 2fa se décodent aussi.

Pourquoi i64 et f64 plutôt qu'i32 ou f32 ?

JSON ne dit pas jusqu'où un nombre peut grandir : i64 est donc le type entier sûr, et f64 correspond à la double précision avec laquelle les nombres JSON sont lus. Un champ devient f64 dès qu'une valeur de l'échantillon a une partie décimale, car serde refuse de lire 4.5 dans un entier.

Que devient une clé nommée type ou match ?

Les mots-clés sont écrits comme identifiants bruts, par exemple r#type, et serde retire le r# en le comparant à la clé : aucun rename n'est nécessaire. Les quatre mots-clés qui ne peuvent pas être bruts, self, Self, super et crate, deviennent self_ et similaires, avec un rename vers la clé d'origine.

Mon JSON est-il envoyé ?

Non. La conversion s'exécute dans votre navigateur sans aucune requête vers un serveur, et le JSON n'est pas conservé : les réponses d'API contenant des jetons ou des données personnelles restent sur votre appareil. Fermez l'onglet et il ne reste rien.

Sources

  • serde, field attributesrename and skip_serializing_if on a field
  • serde, container attributesrename_all = "camelCase" on a struct
  • The Rust Reference, keywords and raw identifiersWhich names need r#, and the four that cannot be raw
  • Rust API Guidelines, namingUpperCamelCase types, snake_case fields

Dernière vérification le 16 octobre 2026.

Les taux et les règles changent ; vérifiez la source avant de vous fier à un chiffre.

Toujours bloqué ? Poser une question sur Convertisseur JSON en structs Rust et toute personne qui connaît la réponse peut répondre. Aucun compte nécessaire.

Outils associés

Tous les outils pour développeurs
Encoder et décoder en Base64Texte et fichiers vers Base64 et retour, avec mode sûr pour les URL et aperçu des imagesConvertisseur de timestamp UnixDes timestamps Unix vers des dates et des dates vers des timestamps, dans tout fuseau horaireJSON vers TypeScriptGénérez des interfaces ou des types TypeScript à partir d'un exemple JSONConvertisseur CSV en JSONConvertissez CSV en JSON et JSON en CSV, avec un aperçu en tableauConvertisseur YAML en JSONConvertissez YAML en JSON et JSON en YAML, avec les ancres résoluesEncodeur et décodeur d'URLEncodez ou décodez textes et URL en encodage pourcent, et voyez chaque partie d'un lienConvertisseur de bases numériquesBinaire, octal, décimal, hexadécimal et toute base jusqu'à 36, exact quelle que soit la taille, avec complément à deuxColor ConverterHEX, RGB, HSL, HWB, OKLCH and CMYK in both directions, with a contrast check
Cet outil vous a-t-il été utile ?
Omnikit

Les petites tâches, faites dans votre navigateur. Gratuit, rapide et privé. Les fichiers ne sont jamais envoyés.

Fichiers

  • Compress Image
  • Image to PDF
  • Merge PDF
  • Compress PDF
  • PDF to Word
  • Word to PDF

Dev

  • JSON Formatter & Validator
  • Base64 Encode & Decode
  • JWT Decoder, Verifier & Encoder
  • Password Generator
  • UUID Generator
  • Unix Timestamp Converter

Finances

  • SIP Calculator
  • EMI Calculator
  • GST Calculator
  • FD Calculator
  • PPF Calculator
  • Lumpsum Calculator
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский
GuidesQuestionsÀ proposNos vérificationsBibliothèque juridique (bêta)ConfidentialitéConditionsTransparenceContactMore: Exam practice (UGC NET Paper 1)Fonctionne dans votre navigateur. Rien n'est envoyé. © 2026 Omnikit (theomnikit.com)