DT Dev Tools

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 hochgeladen

Werbung

Rust-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

  1. JSON einfĂŒgenFĂŒgen Sie ein JSON-Dokument ein oder klicken Sie auf Load sample.
  2. Derives anpassenLegen Sie Root-Struct-Namen, Feldsichtbarkeit und die abzuleitenden Traits fest.
  3. 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?
Ja. Die Structs leiten Serialize und Deserialize ab, und Felder tragen #[serde(rename = "...")], wo der Rust-Name vom JSON-SchlĂŒssel abweicht.
Wie werden optionale Felder dargestellt?
Felder, die in einigen Beispielen fehlen oder null sind, werden zu Option<T>. Aktivieren Sie Skip serializing None, um sie beim Serialisieren wegzulassen.
Kann ich die Sichtbarkeit der Felder Àndern?
Ja. WĂ€hlen Sie pub, pub(crate) oder private Felder und schalten Sie die Derives Debug und Clone ein oder aus.
Wird mein JSON hochgeladen?
Nein. Der Code wird lokal in Ihrem Browser erzeugt.
Werbung