Convertisseur JSON vers struct Rust
Collez du JSON, obtenez des struct serde Rust idiomatiques instantanément, 100 % dans le navigateur. Typage i64/u64/f64 correct, Option pour les null, #[serde(rename)] pour le camelCase. Gratuit.
Options
Qu'est-ce que la conversion JSON vers Rust ?
La conversion JSON vers Rust transforme un échantillon JSON en struct Rust prêts à compiler avec les macros #[derive(Serialize, Deserialize)] de serde, pour ne plus jamais écrire à la main le code de désérialisation des réponses d'API ou des fichiers de configuration. Ce générateur rapide de struct Rust déduit les types numériques corrects, marque les champs absents comme Option et ajoute #[serde(rename)] pour les clés non snake_case — le tout à 100 % dans votre navigateur.
Exemples
Réponse d'API
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
Une charge utile REST typique devient un struct prêt pour serde à intégrer dans votre client. Les nombres sont déduits en i64, les tableaux deviennent Vec<String>.
Objet imbriqué
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
Les objets imbriqués deviennent des struct distincts et nommés (Owner) référencés par champ — les formes identiques sont dédupliquées.
Tableau d'objets (champ optionnel)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
Les tableaux d'objets fusionnent en un seul struct d'élément. Les clés absentes de certains éléments deviennent Option<String> — pas besoin de #[serde(default)].
Clés en camelCase
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
Les champs deviennent snake_case avec #[serde(rename)] renvoyant vers la clé JSON d'origine. Les clés déjà en snake_case comme login n'ont pas de rename.
Comment convertir du JSON en Rust
- 1
Collez votre JSON
Déposez un objet JSON, un tableau ou une réponse d'API dans le champ de saisie. La conversion démarre instantanément.
- 2
Ajustez la sortie
Renommez le struct racine et activez ou non les dérivations serde, Debug et Clone, ou la visibilité pub selon le style de votre crate.
- 3
Copiez ou téléchargez
Récupérez le Rust généré en un clic et collez-le directement dans votre projet.
Common Use Cases
- Clients d'API typés
- Transformez un exemple de réponse REST ou GraphQL en struct serde pour un client reqwest ou similaire, sans écrire à la main le code de désérialisation.
- Analyse de configs et de fixtures
- Générez des struct pour les fichiers de configuration JSON, les fixtures de test ou les charges utiles de webhooks que vous devez désérialiser avec serde_json.
- Prototypage rapide
- Collez une charge utile inconnue pour voir instantanément sa forme sous forme de types Rust — un moyen rapide d'explorer une nouvelle API avant de la brancher.
Comment fonctionne la conversion
- Inférence structurelle
- Chaque objet devient un struct nommé ; les formes identiques sont dédupliquées pour obtenir un seul struct, pas des copies. Les tableaux d'objets sont fusionnés clé par clé, et les clés absentes de certains éléments deviennent Option<T>.
- Typage numérique correct
- Les entiers deviennent i64, passent à u64 au-delà de i64::MAX, et basculent vers f64 au-delà de u64. Les flottants sont détectés à partir du jeton (1.0, 2e3) pour que la désérialisation serde n'échoue jamais sur un flottant placé dans un champ entier.
- Identifiants idiomatiques et compilables
- Les clés deviennent des champs snake_case avec #[serde(rename)] renvoyant vers la clé d'origine ; les mots-clés Rust, les noms en double et les clés non identifiantes sont assainis pour que la sortie compile toujours.
- 100 % côté navigateur
- L'analyse et la génération s'exécutent dans votre navigateur sans aucun appel réseau, vos données restent donc privées.
Conseils pour des struct Rust propres
- Nommez votre struct racine
- Donnez un nom racine parlant (par exemple User, ApiResponse) au lieu du Root par défaut pour un code lisible.
- N'ajoutez serde_json que si nécessaire
- serde_json::Value apparaît pour les tableaux vides ou de types mixtes et les champs uniquement null. Donnez à ces champs un type concret à partir d'un échantillon plus riche si possible, ou ajoutez serde_json à Cargo.toml.
- Vérifiez Option vs requis
- Les champs ne sont marqués Option<T> que lorsqu'un échantillon les omet. Collez une charge utile représentative pour que l'outil déduise précisément les champs requis et optionnels.
Questions fréquentes
Comment convertir du JSON en struct Rust ?
Génère-t-il les dérivations serde ? Ai-je besoin de serde et serde_json ?
Comment utiliser le struct généré pour analyser du JSON ?
Comment les champs optionnels et null sont-ils gérés ?
Comment gère-t-il les clés camelCase et les mots-clés Rust ?
Peut-il utiliser #[serde(rename_all)] au lieu de renommages par champ ?
Quel type numérique Rust utilise-t-il ?
Comment les dates et horodatages sont-ils typés ?
Comment gérer les objets avec des clés dynamiques ou inconnues ?
Mes données JSON sont-elles privées et sécurisées ?
Puis-je générer des struct Rust simples sans serde ?
L'outil est-il gratuit ? Faut-il un compte ?
Outils connexes
Voir tous les outils →Décodeur et Encodeur Base64
Encodage et formatage
Décodez et encodez en Base64 en ligne gratuitement. Conversion en temps réel, support UTF-8 et émojis. 100 % privé, dans votre navigateur.
Convertisseur Base64 en Image
Encodage et formatage
Décodez une chaîne Base64 ou un URI de données en image dans votre navigateur. Aperçu, dimensions et MIME, puis téléchargement en PNG, JPG, GIF, SVG. Sans envoi.
Convertisseur CSV vers JSON
Encodage et formatage
Convertissez du CSV en JSON dans le navigateur. RFC 4180, inférence de types, ligne d'en-tête, sûr pour grands entiers. 100 % privé, sans envoi.
Convertisseur .env vers JSON
Encodage et formatage
Collez un fichier .env, obtenez du JSON instantanément. Vos mots de passe et clés API ne quittent jamais le navigateur — 100 % privé, sans envoi.
Décodeur d'entités HTML gratuit — Décoder le HTML
Encodage et formatage
Décodez les entités HTML et déséchappez le HTML en ligne — gratuit, sans inscription, 100 % dans votre navigateur. Reconvertit les références nommées, décimales & hex en caractères ; jamais envoyé.
Encodeur d'entités HTML gratuit — Échapper le HTML
Encodage et formatage
Encodez les entités HTML et échappez les caractères spéciaux (< > & " ') en ligne — gratuit, sans inscription, 100 % dans votre navigateur. Sortie nommée, décimale ou hexadécimale ; jamais envoyée.