JSON zu Rust Konverter â Structs fĂŒr serde generieren
JSON online in Rust-Structs umwandeln: mit serde-Derives fĂŒr Serialize/Deserialize, Option<T> fĂŒr optionale Felder und snake_case-Namen. Kostenlos, lĂ€uft im Browser.
đ LĂ€uft vollstĂ€ndig in Ihrem Browser â nichts wird hochgeladenRust-Structs fĂŒr serde, erzeugt aus JSON
Serde macht JSON in Rust schnell und sicher â aber erst, wenn Sie Structs geschrieben haben, die exakt zu den Daten passen. Dieser JSON-zu-Rust-Konverter nimmt Ihnen das ab. FĂŒgen Sie ein Beispiel ein, und jedes Objekt wird zu einem Struct mit den Derives Serialize und Deserialize, SchlĂŒssel werden zu idiomatischen snake_case-Feldnamen mit #[serde(rename)]-Attributen, wo nötig, verschachtelte Objekte werden zu eigenen Structs, Arrays zu Vec<T>, und Werte, die im Beispiel irgendwo fehlen oder null sind, werden in Option<T> gepackt. Ganzzahlen und Gleitkommazahlen werden als i64 und f64 unterschieden.
Der Generator basiert auf quicktype, das alle Elemente jedes Arrays zusammenfĂŒhrt, bevor es einen Typ wĂ€hlt. In Rust zĂ€hlt das mehr als in den meisten Sprachen: Ein einziger unerwarteter SchlĂŒssel oder Nullwert lĂ€sst die Deserialisierung scheitern, daher spart es Debugging-Zeit, optionale Felder gleich zu erfassen.
Sichtbarkeit und Derives
WĂ€hlen Sie die Feldsichtbarkeit passend zur Verwendung der Typen â pub fĂŒr ein gemeinsames Models-Crate, pub(crate) fĂŒr interne Module oder private Felder, wenn Sie eigene Konstruktoren ergĂ€nzen möchten. Die Derives Debug und Clone sind standardmĂ€Ăig aktiv, weil fast jedes Modell sie braucht; fĂŒr schlankere Ausgabe schalten Sie sie ab. Aktivieren Sie Skip serializing None, um skip_serializing_if hinzuzufĂŒgen, damit None-Felder aus ausgehendem JSON verschwinden, statt als null geschrieben zu werden. Denken Sie daran, serde mit dem Feature derive sowie serde_json zu Ihrer Cargo.toml hinzuzufĂŒgen.
Genaue Typen erhalten
Verwenden Sie ein Beispiel mit mehreren Array-Elementen und ausgefĂŒllten optionalen Feldern. Leere Arrays und Nullwerte liefern keine Typinformation und fallen auf serde_json::Value zurĂŒck, das Sie meist ersetzen möchten. FĂŒhren Sie nach der Erzeugung rustfmt aus, prĂŒfen Sie Ganzzahlbreiten (eine ID passt womöglich in u32) und machen Sie aus String-Feldern mit festem Wertevorrat Enums mit #[serde(rename_all)]. Alles lĂ€uft lokal in Ihrem Browser, sodass private Payloads nie hochgeladen werden.
So verwenden Sie
- JSON einfĂŒgenFĂŒgen Sie ein JSON-Dokument ein oder klicken Sie auf Load sample.
- Derives anpassenLegen Sie Root-Struct-Namen, Feldsichtbarkeit und die abzuleitenden Traits fest.
- Structs kopierenKopieren Sie den Rust-Code oder laden Sie eine .rs-Datei herunter und fĂŒgen Sie serde zur Cargo.toml hinzu.
HĂ€ufig gestellte Fragen
Funktioniert die Ausgabe mit serde?
Serialize und Deserialize ab, und Felder tragen #[serde(rename = "...")], wo der Rust-Name vom JSON-SchlĂŒssel abweicht.Wie werden optionale Felder dargestellt?
Option<T>. Aktivieren Sie Skip serializing None, um sie beim Serialisieren wegzulassen.Kann ich die Sichtbarkeit der Felder Àndern?
pub, pub(crate) oder private Felder und schalten Sie die Derives Debug und Clone ein oder aus.