Outil Tool Kumar
JSON vers Rust
Générez des structures Rust publiques avec les dérivations Debug, Clone, Serialize et Deserialize. Les clés JSON deviennent des champs snake_case, avec des attributs de renommage serde lorsque le nom transmis dans le JSON diffère.
Utiliser cet outil
- Collez une réponse représentative, en incluant des enregistrements dont les champs diffèrent.
- Vérifiez la sortie générée et modifiez le nom racine si nécessaire.
- Copiez ou téléchargez le code, puis vérifiez les types par rapport à votre contrat d'API.
Exemple détaillé
Cette sortie provient du convertisseur intégré. Les deux prix des articles donnent un champ à virgule flottante ; les valeurs null et chaîne du champ note donnent un champ nullable.
Entrée
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}Sortie
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
#[serde(rename = "user-id")]
pub user_id: i64,
pub profile: Profile,
pub items: Vec<Item>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Profile {
pub city: String,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Item {
pub price: f64,
pub note: Option<String>,
}
Utiliser les structures avec serde_json
Activez la fonctionnalité derive de votre dépendance serde et ajoutez serde_json dans Cargo.toml. Copiez les structures dans un module et désérialisez la réponse.
L'inférence à partir d'un exemple ne définit pas les règles de validation de l'application. Vérifiez les plages de valeurs, les champs obligatoires et les horodatages avant de considérer le modèle décodé comme une entrée fiable.
let model: Root = serde_json::from_str(&response_body)?;
let text = serde_json::to_string(&model)?;Options et cas limites
- Les tableaux deviennent Vec et les champs typés nullables deviennent Option. Les champs absents de certains enregistrements reçoivent skip_serializing_if = "Option::is_none".
- Les valeurs inconnues, uniquement null ou de types hétérogènes utilisent serde_json::Value. Les renommages conservent la ponctuation, et les mots réservés Rust utilisent des identifiants bruts lorsque c'est possible.
- Les entiers utilisent i64 ou i128 au-delà de la plage des entiers signés sur 64 bits. Les nombres décimaux utilisent f64. Vérifiez la prise en charge par serde_json et la plage numérique avant d'accepter de très grands entiers.
- Les dates restent de type String. Les montants monétaires décimaux exacts nécessitent un type métier et un sérialiseur ; un exemple JSON ne peut pas fournir ces règles.
Privé par défaut
Votre document reste dans ce navigateur. Tool Kumar analyse, convertit et crée les téléchargements sur votre appareil, sans compte ni étape d'envoi au serveur.
JSON vers Rust : questions fréquentes
- Le générateur inclut-il les dérivations serde ?
- Oui. Il importe serde::{Deserialize, Serialize} et dérive Debug, Clone, Serialize et Deserialize pour les structures.
- Les noms JSON sont-ils conservés ?
- Oui. Le générateur ajoute des attributs de renommage serde au besoin et peut utiliser rename_all = "camelCase" lorsque cela réduit le nombre de correspondances à définir par champ.
- Comment les valeurs null et les champs absents sont-ils représentés ?
- Les champs typés nullables ou absents utilisent Option<T>. Les champs de type inconnu ou dont la seule valeur observée est null utilisent serde_json::Value, qui peut lui-même contenir la valeur JSON null.
- Puis-je désérialiser le résultat avec serde_json ?
- Oui. Ajoutez serde avec sa fonctionnalité derive et serde_json à votre projet Rust, puis désérialisez les données dans le type Root généré.