DT Dev Tools

Convertir JSON en Rust — GĂ©nĂ©rateur de structs serde

Convertissez du JSON en structs Rust en ligne avec derives serde Serialize/Deserialize, Option<T> pour les champs optionnels et snake_case. Gratuit.

🔒 S'exĂ©cute entiĂšrement dans votre navigateur — rien n'est envoyĂ©

Publicité

Des structs Rust pour serde, générées à partir de JSON

Serde rend le JSON rapide et sûr en Rust, mais seulement une fois que vous avez écrit des structs qui correspondent exactement aux données. Ce convertisseur JSON vers Rust les écrit pour vous. Collez un exemple et chaque objet devient une struct dérivant Serialize et Deserialize, les clés deviennent des noms de champs snake_case idiomatiques avec des attributs #[serde(rename)] si nécessaire, les objets imbriqués deviennent des structs distinctes, les tableaux deviennent Vec<T>, et les valeurs absentes ou nulles quelque part dans l'exemple sont enveloppées dans Option<T>. Les entiers et les flottants sont distingués en i64 et f64.

Le générateur repose sur quicktype, qui fusionne tous les éléments de chaque tableau avant de choisir un type. En Rust, cela compte plus que dans la plupart des langages : une seule clé inattendue ou un seul null fait échouer la désérialisation, et capturer d'emblée les champs optionnels fait gagner du temps de débogage.

Visibilité et derives

Choisissez la visibilitĂ© des champs selon l'usage des types : pub pour un crate de modĂšles partagĂ©, pub(crate) pour des modules internes, ou des champs privĂ©s si vous voulez ajouter vos propres constructeurs. Les derives Debug et Clone sont activĂ©s par dĂ©faut car presque tous les modĂšles en ont besoin ; dĂ©sactivez-les pour une sortie plus lĂ©gĂšre. Activez Skip serializing None pour ajouter skip_serializing_if, afin que les champs None disparaissent du JSON sortant au lieu d'ĂȘtre Ă©crits en null. N'oubliez pas d'ajouter serde avec la fonctionnalitĂ© derive ainsi que serde_json Ă  votre Cargo.toml.

Obtenir des types précis

Utilisez un exemple avec plusieurs Ă©lĂ©ments de tableau et des champs optionnels renseignĂ©s. Les tableaux vides et les valeurs nulles ne donnent aucune information de type et retombent sur serde_json::Value, que vous voudrez gĂ©nĂ©ralement remplacer. AprĂšs la gĂ©nĂ©ration, lancez rustfmt, vĂ©rifiez la largeur des entiers (un identifiant tient peut-ĂȘtre dans un u32) et transformez les champs de type chaĂźne Ă  ensemble de valeurs fixe en Ă©numĂ©rations avec #[serde(rename_all)]. Tout s'exĂ©cute en local dans votre navigateur : les charges utiles privĂ©es ne sont jamais envoyĂ©es.

Comment utiliser

  1. Collez le JSONCollez un document JSON ou cliquez sur Load sample.
  2. Ajustez les derivesDéfinissez le nom de la struct racine, la visibilité des champs et les traits à dériver.
  3. Copiez les structsCopiez le code Rust ou téléchargez un fichier .rs et ajoutez serde à Cargo.toml.

Questions fréquemment posées

La sortie fonctionne-t-elle avec serde ?
Oui. Les structs dĂ©rivent Serialize et Deserialize, et les champs portent #[serde(rename = "...")] partout oĂč le nom Rust diffĂšre de la clĂ© JSON.
Comment les champs optionnels sont-ils représentés ?
Les champs absents ou nuls dans certains exemples deviennent Option<T>. Cochez Skip serializing None pour les omettre lors de la sérialisation.
Puis-je changer la visibilité des champs ?
Oui. Choisissez des champs pub, pub(crate) ou privés, et activez ou désactivez les derives Debug et Clone.
Mon JSON est-il envoyé quelque part ?
Non. Le code est généré en local dans votre navigateur.
Publicité