Rust-Structs und Serde
Serde ist der De-facto-Standard für JSON-Serialisierung in Rust. Der Generator erzeugt Struct-Definitionen dekoriert mit #[derive(Debug, Clone, Serialize, Deserialize)] — die häufigste Derive-Kombination für Daten-Structs. serde_json wird als Runtime angenommen, sodass der generierte Code sofort mit serde_json::from_str und serde_json::to_string funktioniert.
Das Typ-Mapping folgt Rust-Idiomen: JSON-Zeichenketten werden zu String, Ganzzahlen zu i64, Dezimalzahlen zu f64, Booleans zu bool und Arrays zu Vec<T>. Verschachtelte Objekte generieren separate benannte Structs. Felder die im JSON null sind oder in einigen Array-Objekten fehlen werden als Option<T> typisiert, mit #[serde(skip_serializing_if = "Option::is_none")] um sie bei None wegzulassen.
Feldnamen in Rust verwenden snake_case, während JSON häufig camelCase verwendet. Der Generator gibt #[serde(rename = "originalKey")] für Felder aus deren Rust-Name vom JSON-Schlüssel abweicht, und optional #[serde(rename_all = "camelCase")] als Container-Attribut.
Ownership, Lifetimes und Performance
Die Standardausgabe verwendet besessene String-Typen für Textfelder, was bedeutet dass die Struct alle Daten besitzt und frei bewegt und gespeichert werden kann. Ein alternativer "geliehener" Modus ersetzt String durch &str (mit Lifetime-Parameter) und vermeidet Allokation beim Deserialisieren aus einem bereits besessenen Puffer.
Für große JSON-Dokumente unterstützt serde_json Streaming-Deserialisierung via serde_json::Deserializer::from_reader. Die generierten Structs sind vollständig streaming-kompatibel da serde's trait-basiertes Design quellenagnostisch ist.
Rusts exhaustives Pattern-Matching bedeutet dass das Hinzufügen eines neuen Feldes zu einer JSON-Antwort bestehenden Code nicht still brechen wird. Das #[serde(deny_unknown_fields)]-Attribut kann hinzugefügt werden um unerwartete JSON-Schlüssel zu erkennen.
Rust-Entwicklungs-Workflows
Rust-Backend-Entwickler die Axum, Actix-web oder Warp verwenden benötigen typisierte Anfrage- und Antwortmodelle. Der Generator erzeugt Structs die direkt mit Axums Json<T>-Extractor und Antworttyp funktionieren.
CLI-Tools und Datenverarbeitungsskripte in Rust parsen oft JSON-Konfigurationsdateien oder API-Antworten. Der Generator bootstrapt Struct-Definitionen damit Sie sich auf die Geschäftslogik konzentrieren können.
WebAssembly (WASM)-Projekte die JavaScript-APIs aufrufen empfangen oft JSON-Daten. Die generierten serde-Structs sind mit wasm-bindgen und serde-wasm-bindgen kompatibel.