UTILS.
100 % im Browser
🦀

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.

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