Machen Sie aus einem JSON-Beispiel Rust-Structs mit serde-Derives, Umbenennungen, Option und Vec
Läuft in Ihrem Browser. Nichts, was Sie eingeben, wird irgendwohin gesendet. Geprüft am 16. Oktober 2026.Fügen Sie ein JSON-Beispiel ein und erhalten Sie Rust-Structs mit den Derives Serialize und Deserialize von serde. Ganze Zahlen werden zu i64, und jede Dezimalzahl macht ein Feld zu f64; ein Wert, der null ist oder in manchen Objekten fehlt, wird zu Option<T>, und Schlüssel, die anders geschrieben sind als ihr snake_case-Feld, erhalten ein serde-rename, 1 rename_all, wenn alle camelCase sind.
Diese Seite wurde maschinell aus dem englischen Original übersetzt. Die Übersetzung wurde noch von keinem Menschen geprüft; maßgeblich ist die englische Fassung. Englisches Original lesen
Fügen Sie ein JSON-Beispiel, etwa eine API-Antwort, in das linke Feld ein.
Die Rust-Structs erscheinen während der Eingabe, jedes mit #[derive(Serialize, Deserialize)], Feldern in snake_case und den nötigen serde-Umbenennungen.
Schalten Sie Option für jedes Feld oder PartialEq ein, wenn Sie es möchten, und legen Sie den Namen des Wurzel-Structs fest.
Klicken Sie auf Kopieren oder auf Herunterladen, um models.rs zu speichern, und fügen Sie serde (mit dem Feature derive) und serde_json zu Cargo.toml hinzu.
Rust dekodiert JSON mit serde, und jedes Objekt braucht ein Struct, dessen Felder die richtigen Typen haben und dessen Namen auf die JSON-Schlüssel abbilden. Dieser Konverter schreibt diese Structs aus einem Beispiel, sodass eine lange API-Antwort mit einem Einfügen zu kompilierbarem Rust wird.
Wie die Typen gewählt werden.
| JSON-Wert | Rust-Typ |
|---|---|
| "text" | String |
| true / false | bool |
| 42 (nur ganze Zahlen) | i64 |
| 4.5 (irgendeine Dezimalzahl gesehen) | f64 |
| null und zusätzlich ein Typ | Option |
| nur null oder gemischte Arten | serde_json::Value |
| [ ... ] | Vec<...> |
| { } leer | Map<String, Value> |
| { ... } | ein eigenes Struct |
Fehlende Schlüssel. Alle Objekte eines Arrays werden zu einem Struct zusammengeführt. Ein Schlüssel, den manche weglassen, wird zu einer Option, weil serde eine fehlende Option als None behandelt und jedes andere fehlende Feld als Fehler. Diese Felder erhalten außerdem skip_serializing_if, sodass sie beim Zurückschreiben des Structs wieder weggelassen werden.
Namen. Felder stehen in snake_case. Ist jeder Schlüssel einfach die camelCase-Form seines Felds, trägt das Struct ein einziges rename_all; andernfalls erhält jedes abweichende Feld sein eigenes rename. Schlüsselwörter werden zu Raw-Bezeichnern wie r#type; self, super und crate können nicht raw sein und werden daher zu self_ mit einem rename.
Optionen. Option für jedes Feld passt zu APIs, die jeden Schlüssel weglassen können. PartialEq ableiten lässt Tests Werte vergleichen. Das Wurzel-Struct heißt Root, sofern Sie keinen Namen vergeben.
Jede Ausgabe wurde geprüft, indem das Rust nach den Regeln von serde zurückgelesen und 9 Beispiele damit dekodiert wurden. Nichts, was Sie einfügen, verlässt den Browser.
Fügen Sie ein JSON-Beispiel in den Konverter ein, und die Rust-Structs erscheinen daneben, jedes mit Serialize und Deserialize. Fügen Sie serde mit dem Feature derive und serde_json zu Cargo.toml hinzu, setzen Sie die Structs in ein Modul und dekodieren Sie mit serde_json::from_str::<Root>(&text).
Ein Feld wird zu Option, wenn das Beispiel es als null zeigt oder wenn manche Objekte eines Arrays den Schlüssel weglassen. Serde dekodiert einen fehlenden Schlüssel in einer Option als None, während jedes andere fehlende Feld ein Fehler ist, daher lässt erst Option das Struct jedes Objekt des Beispiels annehmen.
Felder werden in snake_case geschrieben, wie es der Rust-Stil verlangt. Ist jeder Schlüssel die camelCase-Form seines Felds, erhält das Struct ein einziges #[serde(rename_all = "camelCase")]; andernfalls erhält jedes anders geschriebene Feld sein eigenes #[serde(rename = "key")], sodass auch Schlüssel wie first-name oder 2fa dekodiert werden.
JSON sagt nicht, wie groß eine Zahl werden darf, daher ist i64 der sichere Ganzzahltyp, und f64 entspricht der doppelten Genauigkeit, mit der JSON-Zahlen gelesen werden. Ein Feld wird zu f64, sobald irgendein Beispielwert Nachkommastellen hat, weil serde sich weigert, 4.5 in eine Ganzzahl zu lesen.
Schlüsselwörter werden als Raw-Bezeichner geschrieben, etwa r#type, und serde entfernt das r# beim Abgleich mit dem Schlüssel, sodass kein rename nötig ist. Die vier Schlüsselwörter, die nicht raw sein können, self, Self, super und crate, werden zu self_ und Ähnlichem, mit einem rename zurück auf den ursprünglichen Schlüssel.
Nein. Die Umwandlung läuft in Ihrem Browser ohne Anfrage an einen Server, und das JSON wird nicht gespeichert, sodass API-Antworten mit Tokens oder persönlichen Daten auf Ihrem Gerät bleiben. Schließen Sie den Tab, und nichts bleibt zurück.
Sätze und Regeln ändern sich; prüfen Sie die Quelle, bevor Sie sich auf eine Zahl verlassen.
Kommen Sie nicht weiter? Fragen Sie zu JSON-zu-Rust-Struct-Konverter und jeder, der es weiß, kann antworten. Kein Konto nötig.