Zum Inhalt springen
100% lokal

JSON zu Rust-Struct

Konvertiert ein JSON-Dokument in einsatzfähige Rust-Strukturen für serde.

Eingabe
Ausgabe

JSON zu Rust-Struct

Fügen Sie ein JSON-Objekt oder Array ein, und dieses Tool generiert entsprechende Rust-Strukturen, die sofort in ein Projekt eingebunden werden können, das serde zur Serialisierung verwendet. Es erspart die Mühe, jedes Mal Feldtypen und Derive-Attribute von Hand zu schreiben, wenn sich eine API-Antwort oder Konfigurationsdatei ändert.

Die Optionen steuern das Aussehen des generierten Codes. Wählen Sie aus, welche Traits abgeleitet werden – Debug, Clone, Serialize, Deserialize, PartialEq – und ob #[serde(rename_all = "camelCase")] hinzugefügt werden soll, damit idiomatische snake_case Rust-Felder weiterhin camelCase JSON-Schlüssel korrekt deserialisieren. Null-Werte können automatisch zu Option<T> werden, und Sie können i32, i64 oder u64 für Ganzzahlen und String oder ein geliehenes &str (mit einer Lebensdauer) für Text wählen. Verschachtelte Objekte können als separate Top-Level-Strukturen generiert oder in ihr eigenes pub mod eingewickelt werden, und Felder können öffentlich oder privat sein.

Arrays von Objekten werden zu einer einzigen Struktur zusammengefasst: Ein Feld, das nur in einigen Elementen vorhanden ist, wird automatisch zu Option<T>, sodass eine aus wenigen Beispieldatensätzen generierte Struktur dennoch zum gesamten Datensatz passt. Feldnamen werden in snake_case konvertiert, Rust-Schlüsselwörter werden in Raw-Identifizierer wie r#type umgewandelt, und ein Name, der nicht sauber dargestellt werden kann, behält seinen ursprünglichen Schlüssel über #[serde(rename = "...")] bei.

Alles läuft lokal in Ihrem Browser ab – Ihr JSON wird niemals hochgeladen, daher ist es sicher, echte API-Payloads oder Konfigurationsdaten einzufügen. Kopieren Sie den generierten Code, laden Sie ihn als .txt-Datei herunter oder senden Sie die Ausgabe zurück in die Eingabe, um sie weiter zu verfeinern.

Häufige Fragen

Installiert es serde oder fügt es zu Cargo.toml hinzu?
Nein. Es generiert nur den Struktur-Code. Fügen Sie serde mit der derive-Funktion separat zu Ihrer Cargo.toml hinzu: serde = { version = "1", features = ["derive"] }.
Was passiert mit einem Feld, das in einigen Datensätzen null ist und in anderen vorhanden ist?
Wenn "Null-Felder in Option<T> einschließen" aktiviert ist, wird dieses Feld zu Option<T>, sodass es korrekt deserialisiert wird, unabhängig davon, ob es vorhanden, null oder fehlend ist.
Warum erhält ein Feld ein #[serde(rename = "...")] Attribut?
Dies wird angezeigt, wenn die camelCase-Umbenennung deaktiviert ist und der JSON-Schlüssel nicht mit dem generierten snake_case Rust-Feldnamen übereinstimmt, sodass der genaue ursprüngliche Schlüssel zur Deserialisierung beibehalten wird.
Kann es Strukturen aus einem Array auf der obersten Ebene generieren?
Ja. Ein Array von Objekten erzeugt einen Typ-Alias wie pub type Root = Vec<Item>; plus die Item-Struktur, wobei Felder aus jedem Element im Array zusammengefasst werden.
Wird mein JSON irgendwo hochgeladen?
Nein. Die Struktur-Generierung läuft vollständig in Ihrem Browser – Ihr JSON verlässt niemals Ihr Gerät.