JSON vers structures Rust
JSON to Rust Structs
Produit des structures Rust annotées pour serde à partir d’un échantillon, avec Option pour les champs absents ou nuls et un renommage en snake_case.
Émet des structs Rust avec les derives `serde` à partir d'un document JSON d'exemple — `Serialize`, `Deserialize`, le bon `Option<…>` sur les champs parfois absents, et un `#[serde(rename = "…")]` partout où la clé JSON n'est pas un nom de champ snake_case légal.
JSON d’exemple
Déposez un fichier .json
Lu dans cet onglet. Rien n’est envoyé.
Donnez-lui tous les éléments dont vous disposez. Chaque enregistrement supplémentaire resserre la déduction : un champ absent de l’un d’eux est précisément ce qui le rend facultatif.
Rust
Comment s’en servir
Collez autant d'enregistrements que vous en avez
Chaque élément de chaque tableau est lu et fusionné, pas seulement le premier. Trois enregistrements en disent bien plus qu'un seul, car un champ absent de l'un d'eux est précisément ce qui rend ce champ facultatif.
Nommez le type racine
Les objets imbriqués sont nommés d'après la clé qui les porte, mise au singulier pour les tableaux : `users` donne donc un `User`. Seule la racine attend un nom de votre part.
Lisez les décomptes sous la sortie
Types, champs facultatifs, unions et nombre d'enregistrements fusionnés. Un décompte d'unions supérieur à zéro signifie qu'un champ portait deux sortes de valeurs différentes dans votre échantillon — cela vaut la peine d'y regarder avant de coller le résultat dans une base de code.
Collez les structs dans votre crate
La ligne `use serde::{Deserialize, Serialize};` est émise pour vous ; la crate elle-même et sa feature `derive`, c'est à vous de les ajouter au Cargo.toml.
Questions fréquentes
Pourquoi un champ est-il ressorti en `serde_json::Value` ?
Parce qu'il portait plus d'une sorte de valeur dans l'échantillon — une chaîne dans un enregistrement, un nombre dans un autre. Rust n'a pas d'union non étiquetée sur laquelle se rabattre ici, et `Value` est le type honnête : il désérialise sans mentir sur ce qu'il contient.
Quelle est la différence entre `Option<T>` et `#[serde(default)]` ici ?
Un champ qui valait `null` dans certains enregistrements devient `Option<T>` ; un champ simplement absent reçoit en plus `#[serde(default)]`, si bien que désérialiser un enregistrement qui en est dépourvu réussit au lieu d'échouer. Les deux apparaissent ensemble quand l'échantillon a montré les deux.
Des enums sont-elles générées pour les champs chaîne ?
Non. Toute chaîne est un `String`. Inférer une enum à partir d'une poignée d'enregistrements, c'est une erreur de désérialisation dès que la production envoie une variante que votre échantillon ne contenait pas — une panne pire qu'un type trop large.
Puis-je dériver d'autres traits ?
Ajoutez-les vous-même — la liste de derives émise se limite délibérément à `Serialize, Deserialize`. `Debug` et `Clone` sont presque toujours souhaités aussi, mais c'est une modification d'une ligne, et se tromper empêcherait la sortie de compiler pour les types qui ne peuvent pas les dériver.
À alimenter depuis
JSON vers structures Go
JSON to Go Structs
Produit des structures Go avec leurs balises json à partir d’un échantillon, types imbriqués et répétés compris.
Formateur et validateur JSON
JSON Formatter & Validator
Met en forme, minifie et valide du JSON en désignant la ligne et la colonne exactes de l’erreur de syntaxe.
Formateur et validateur YAML
YAML Formatter & Validator
Réindente le YAML de façon cohérente, le valide et signale les tabulations et les ancres qui font échouer les analyseurs.
Formateur et validateur TOML
TOML Formatter & Validator
Met en forme et valide du TOML, en normalisant l’ordre des tables et le style des tables en ligne.
Ensuite
Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.
Formateur et validateur JSON
JSON Formatter & Validator
Met en forme, minifie et valide du JSON en désignant la ligne et la colonne exactes de l’erreur de syntaxe.
JSON vers structures Go
JSON to Go Structs
Produit des structures Go avec leurs balises json à partir d’un échantillon, types imbriqués et répétés compris.
JSON vers TypeScript
JSON to TypeScript
Déduit des interfaces ou des types TypeScript à partir d’un échantillon JSON, en fusionnant les champs facultatifs et les unions.
Encodeur et décodeur Base64
Base64 Encoder & Decoder
Encode et décode en Base64 et en Base64URL, pour du texte comme pour des fichiers, avec un traitement correct de l’UTF-8.
curl vers code
curl to Code
Traduit une commande curl en fetch, axios, requests Python, Go, PHP ou PowerShell.
Hachage de texte
Text Hash
Calcule le MD5, le SHA-1, le SHA-256, le SHA-384, le SHA-512 et le CRC-32 d’une chaîne, avec sortie en majuscules ou en Base64.