UTILS.
Privat von Anfang an
🦀

JSON zu Rust-Serde-Structs

Erzeugen Sie Rust-Structs mit serde-Derives aus einem JSON-Beispiel, bereit zum Serialize/Deserialize, mit Option für nullbare Felder und rename-Attributen.

Deine Dateien bleiben auf diesem Gerät

Dateien werden im Browser verarbeitet, nie hochgeladen. Die Website lädt den benötigten Code und die Ressourcen herunter. Ohne Konto und Tracker.

Speichere dieses Tool über Herunterladen als einzelne HTML-Datei zur Offline-Nutzung.

Datenschutz →
Ausgabe

Über dieses Tool

Das Tool JSON zu Rust-Serde-Structs konvertiert ein eingefügtes JSON-Beispiel in Rust-Structs, die für serde annotiert sind, sodass Sie dieselbe Payload deserialisieren können, ohne jedes Feld von Hand zu schreiben. Es parst das JSON, leitet Rust-Typen rekursiv ab und gibt ein #[derive(Serialize, Deserialize, ...)]-Struct pro Objekt aus: Strings werden zu String, Ganzzahlen zu i64 (oder u64, wenn alle Beispiele nicht-negativ sind), andere Zahlen zu f64, Booleans zu bool, Arrays zu Vec<T> und verschachtelte Objekte zu ihren eigenen PascalCase-Structs, die vor ihren Eltern definiert werden.

Alle Arbeit erfolgt lokal in Ihrem Browser mit JSON.parse und reinem JavaScript — nichts wird hochgeladen. Struct-Felder werden in snake_case umgewandelt, und immer wenn ein JSON-Schlüssel vom snake_case-Feld abweicht, fügt das Tool #[serde(rename = "originalKey")] hinzu, sodass das Struct weiterhin auf das Wire-Format abbildet. Schlüssel, die in einigen Geschwisterbeispielen fehlen oder als null gesehen werden, werden zu Option<T> mit #[serde(default)], sodass die Deserialisierung ihr Fehlen toleriert. Leere Arrays fallen auf Vec<serde_json::Value> zurück.

Der Integer-Breite-Umschalter wechselt zwischen 64-Bit (i64/u64, Standard) und 32-Bit (i32/u32) Ganzzahlen und stuft automatisch auf 64-Bit hoch, wenn ein Beispielwert den 32-Bit-Bereich überschreitet. Der Derive-Umschalter wählt zwischen dem vollen Satz (Serialize, Deserialize, Debug, Clone) und einem minimalen Serialize, Deserialize. Die Datei beginnt mit use serde::{Serialize, Deserialize};. Kopieren Sie sie oder laden Sie eine .rs-Datei herunter.

Häufig gestellte Fragen

Wie werden JSON-Typen auf Rust abgebildet?
string zu String, Ganzzahl zu i64 (oder u64, wenn jedes Beispiel nicht-negativ ist), Nicht-Ganzzahl zu f64, Boolean zu bool, Array zu Vec<T> und Objekt zu einem benannten Struct mit serde-Derives. Null- oder fehlende Felder werden zu Option<T> mit #[serde(default)].
Wann wird #[serde(rename)] hinzugefügt?
Immer wenn der JSON-Schlüssel nicht seinem snake_case-Feldnamen entspricht — zum Beispiel erzeugt ein Schlüssel userName das Feld user_name mit #[serde(rename = "userName")], sodass das Struct das ursprüngliche JSON weiterhin exakt deserialisiert.
Kann ich die Integer-Breite wählen?
Ja. Der Breiten-Umschalter gibt 64-Bit (i64/u64) oder 32-Bit (i32/u32) Ganzzahlen aus. Die Vorzeichenbehaftung folgt den Daten: nur nicht-negative Beispiele verwenden den vorzeichenlosen Typ. Werte jenseits des 32-Bit-Bereichs werden automatisch auf 64-Bit hochgestuft.
Welche Derives sind enthalten?
Der Standard ist #[derive(Serialize, Deserialize, Debug, Clone)]; die minimale Option gibt nur Serialize, Deserialize aus. Kind-Structs werden vor den Eltern deklariert, die sie referenzieren, sodass das Modul unverändert kompiliert.

Weitere Tools