JSON zu Rust Struct Konverter
JSON einfügen, sofort idiomatische Rust-serde-Structs erhalten, 100 % im Browser. Korrekte i64/u64/f64-Typen, Option für null, #[serde(rename)] für camelCase. Kostenlos.
Optionen
Was ist die JSON-zu-Rust-Konvertierung?
Die JSON-zu-Rust-Konvertierung verwandelt ein JSON-Beispiel in kompilierfertige Rust-Structs mit den Makros #[derive(Serialize, Deserialize)] von serde, sodass Sie nie wieder Deserialisierungs-Boilerplate für API-Antworten oder Konfigurationsdateien von Hand schreiben. Dieser schnelle Rust-Struct-Generator leitet korrekte Zahlentypen ab, markiert fehlende Felder als Option und ergänzt #[serde(rename)] für Schlüssel, die nicht snake_case sind — alles zu 100 % in Ihrem Browser.
Beispiele
API-Antwort
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
Eine typische REST-Nutzlast wird zu einem serde-fähigen Struct, das Sie direkt in Ihren Client einfügen können. Zahlen ergeben i64, Arrays werden zu Vec<String>.
Verschachteltes Objekt
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
Verschachtelte Objekte werden zu separaten, benannten Structs (Owner), die per Feld referenziert werden — identische Formen werden dedupliziert.
Array von Objekten (optionales Feld)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
Arrays von Objekten werden zu einem Element-Struct zusammengeführt. Schlüssel, die in manchen Elementen fehlen, werden zu Option<String> — kein #[serde(default)] nötig.
camelCase-Schlüssel
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
Felder werden zu snake_case, wobei #[serde(rename)] auf den ursprünglichen JSON-Schlüssel zurückverweist. Bereits snake-Schlüssel wie login erhalten keinen rename.
So konvertieren Sie JSON nach Rust
- 1
JSON einfügen
Fügen Sie ein JSON-Objekt, ein Array oder eine API-Antwort in das Eingabefeld ein. Die Konvertierung startet sofort.
- 2
Ausgabe anpassen
Benennen Sie das Root-Struct um und schalten Sie serde-Derives, Debug und Clone oder die pub-Sichtbarkeit um, passend zum Stil Ihres Crates.
- 3
Kopieren oder herunterladen
Übernehmen Sie das erzeugte Rust mit einem Klick und fügen Sie es direkt in Ihr Projekt ein.
Common Use Cases
- Typisierte API-Clients
- Verwandeln Sie eine Beispiel-Antwort von REST oder GraphQL in serde-Structs für einen reqwest- oder ähnlichen Client, ohne Deserialisierungs-Boilerplate von Hand zu schreiben.
- Konfigurations- und Fixture-Parsing
- Erzeugen Sie Structs für JSON-Konfigurationsdateien, Test-Fixtures oder Webhook-Nutzlasten, die Sie mit serde_json deserialisieren müssen.
- Schnelles Prototyping
- Fügen Sie eine unbekannte Nutzlast ein, um ihre Struktur sofort als Rust-Typen zu sehen — eine schnelle Möglichkeit, eine neue API zu erkunden, bevor Sie sie anbinden.
Wie die Konvertierung funktioniert
- Strukturelle Inferenz
- Jedes Objekt wird zu einem benannten Struct; identische Formen werden dedupliziert, sodass Sie ein Struct erhalten und keine Kopien. Arrays von Objekten werden Schlüssel für Schlüssel zusammengeführt, und Schlüssel, die in manchen Elementen fehlen, werden zu Option<T>.
- Korrekte Zahlentypisierung
- Ganzzahlen werden zu i64, steigen jenseits von i64::MAX auf u64 und fallen jenseits von u64 auf f64 zurück. Floats werden am Token erkannt (1.0, 2e3), sodass die serde-Deserialisierung nie an einer Float-in-Integer-Diskrepanz scheitert.
- Idiomatische, kompilierbare Bezeichner
- Schlüssel werden zu snake_case-Feldern mit #[serde(rename)] zurück auf den ursprünglichen Schlüssel; Rust-Schlüsselwörter, doppelte Namen und Nicht-Bezeichner-Schlüssel werden bereinigt, sodass die Ausgabe stets kompiliert.
- 100 % clientseitig
- Parsing und Generierung laufen in Ihrem Browser ohne Netzwerkaufrufe, sodass Ihre Daten privat bleiben.
Tipps für saubere Rust-Structs
- Benennen Sie Ihr Root-Struct
- Vergeben Sie einen aussagekräftigen Root-Namen (z. B. User, ApiResponse) statt des Standards Root für lesbaren Code.
- serde_json nur bei Bedarf hinzufügen
- serde_json::Value erscheint bei leeren oder gemischten Arrays und reinen null-Feldern. Geben Sie diesen Feldern nach Möglichkeit einen konkreten Typ aus einem reichhaltigeren Beispiel oder fügen Sie serde_json zu Cargo.toml hinzu.
- Option vs. Pflichtfeld prüfen
- Felder werden nur dann als Option<T> markiert, wenn ein Beispiel sie auslässt. Fügen Sie eine repräsentative Nutzlast ein, damit das Werkzeug Pflicht- und optionale Felder genau ableitet.
Häufig gestellte Fragen
Wie konvertiere ich JSON in ein Rust-Struct?
Erzeugt es serde-Derives? Brauche ich serde und serde_json?
Wie verwende ich das erzeugte Struct, um JSON zu parsen?
Wie werden optionale und null-Felder behandelt?
Wie geht es mit camelCase-Schlüsseln und Rust-Schlüsselwörtern um?
Kann es #[serde(rename_all)] statt Renames pro Feld verwenden?
Welchen Rust-Zahlentyp verwendet es?
Wie werden Datumsangaben und Zeitstempel typisiert?
Wie behandle ich Objekte mit dynamischen oder unbekannten Schlüsseln?
Sind meine JSON-Daten privat und sicher?
Kann ich schlichte Rust-Structs ohne serde erzeugen?
Ist das Werkzeug kostenlos? Brauche ich ein Konto?
Verwandte Werkzeuge
Alle Werkzeuge anzeigen →Base64-Dekodierer & -Kodierer
Kodierung & Formatierung
Base64 online kostenlos dekodieren und kodieren. Echtzeitkonvertierung mit voller UTF-8- und Emoji-Unterstützung. 100 % privat — läuft in Ihrem Browser. Keine Anmeldung nötig.
Base64-in-Bild-Konverter
Kodierung & Formatierung
Eine Base64-Zeichenkette oder einen Data-URI im Browser zurück in ein Bild dekodieren. Vorschau, Abmessungen & MIME ablesen, dann als PNG, JPG, GIF, SVG herunterladen. Kein Upload.
CSV-zu-JSON-Konverter
Kodierung & Formatierung
CSV im Browser nach JSON konvertieren. RFC 4180, Typinferenz, Kopfzeile, Big-Int-sicher. 100 % privat, kein Upload.
.env zu JSON Konverter
Kodierung & Formatierung
Eine .env-Datei einfügen, sofort JSON erhalten. Datenbankpasswörter, API-Keys und Tokens verlassen nie deinen Browser — 100% privat, kein Upload.
Kostenloser HTML-Entity-Decoder — HTML dekodieren
Kodierung & Formatierung
HTML-Entities dekodieren und HTML online unescapen — kostenlos, ohne Anmeldung, 100 % im Browser. Wandelt benannte, dezimale & Hex-Referenzen zurück in Zeichen; nichts wird hochgeladen.
Kostenloser HTML-Entity-Encoder — HTML escapen
Kodierung & Formatierung
HTML-Entities kodieren und Sonderzeichen escapen (< > & " ') — online, kostenlos, ohne Anmeldung, 100 % im Browser. Benannte, dezimale oder Hex-Ausgabe; nichts wird hochgeladen.