Tool von Tool Kumar
Rust-Struct aus JSON generieren
Generiere öffentliche Rust-Structs mit Derives für Debug, Clone, Serialize und Deserialize. JSON-Schlüssel werden zu snake_case-Feldern. Weicht der ursprüngliche JSON-Name ab, wird ein serde-rename-Attribut ergänzt.
So verwendest du dieses Tool
- Füge eine repräsentative Antwort ein, auch mit Datensätzen, deren Felder sich unterscheiden.
- Prüfe die generierte Ausgabe und ändere bei Bedarf den Stammnamen.
- Kopiere den Code oder lade ihn herunter. Prüfe anschließend die Typen anhand deines API-Vertrags.
Praxisbeispiel
Diese Ausgabe stammt aus dem integrierten Konverter. Aus den beiden Artikelpreisen wird ein Gleitkommafeld abgeleitet. Die Werte null und ein String im Feld note ergeben ein Feld, das null sein kann.
Eingabe
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}Ausgabe
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>,
}
Die Structs mit serde_json verwenden
Aktiviere das Feature derive für deine serde-Abhängigkeit und ergänze serde_json in Cargo.toml. Kopiere die Structs in ein Modul und deserialisiere die Antwort.
Die Typableitung aus Beispielen legt keine Validierungsregeln für deine Anwendung fest. Prüfe Wertebereiche, erforderliche Felder und Zeitstempel, bevor du das dekodierte Modell als vertrauenswürdige Eingabe behandelst.
let model: Root = serde_json::from_str(&response_body)?;
let text = serde_json::to_string(&model)?;Optionen und Sonderfälle
- Arrays werden zu Vec, typisierte Felder, die null sein können, zu Option. Bei Feldern, die in manchen Datensätzen fehlen, wird skip_serializing_if = "Option::is_none" ergänzt.
- Unbekannte Werte, ausschließlich null oder gemischte Typen verwenden serde_json::Value. Umbenennungen erhalten Satzzeichen. Für reservierte Rust-Wörter werden nach Möglichkeit Raw-Identifier verwendet.
- Ganzzahlen verwenden i64 oder, jenseits des vorzeichenbehafteten 64-Bit-Bereichs, i128. Brüche verwenden f64. Prüfe die Unterstützung durch serde_json und den Wertebereich, bevor du sehr große Ganzzahlen akzeptierst.
- Datumswerte bleiben String. Exakte Geldbeträge mit Dezimalstellen benötigen einen fachlichen Typ und einen Serializer. Ein JSON-Beispiel kann diese Regeln nicht liefern.
Standardmäßig privat
Dein Dokument bleibt in diesem Browser. Tool Kumar parst und konvertiert Daten und erstellt Downloads auf deinem Gerät, ohne Konto und ohne Upload.
Rust-Struct aus JSON generieren: häufige Fragen
- Enthält der Generator serde-Derives?
- Ja. Er importiert serde::{Deserialize, Serialize} und leitet Debug, Clone, Serialize und Deserialize für Structs ab.
- Bleiben JSON-Namen erhalten?
- Ja. Er erzeugt bei Bedarf serde-rename-Attribute und kann rename_all = "camelCase" verwenden, wenn dadurch weniger Zuordnungen pro Feld nötig sind.
- Wie werden null-Werte und fehlende Werte dargestellt?
- Typisierte Felder, die null sein können oder fehlen, verwenden Option<T>. Unbekannte Felder und Felder mit ausschließlich null verwenden serde_json::Value, das selbst JSON-null enthalten kann.
- Kann ich das Ergebnis mit serde_json deserialisieren?
- Ja. Füge deinem Rust-Projekt serde mit dem Feature derive sowie serde_json hinzu. Deserialisiere dann in den generierten Typ Root.
Verwandte Tools
Go-Struct aus JSON generieren, JSON in Java konvertieren und JSON Schema generieren.