Entwickler / Typen
Konverter von JSON zu Rust-Strukturen
Wandle ein JSON-Beispiel in Rust-Strukturen um, die serde's Serialize und Deserialize ableiten – mit snake_case-Feldern, Umbenennungen, Option für fehlende oder null-Schlüssel und Vec für Arrays.
Konverter von JSON zu Rust-Strukturen: Jedes Objekt wird zu einer Struktur mit öffentlichen Feldern. Schlüssel werden in snake_case umgewandelt. Wenn die Schreibweise im JSON abweicht, wird #[serde(rename = "…")] eingefügt. Rust-Schlüsselwörter wie type werden zu Raw-Identifiers (r#type), die serde automatisch wieder dem ursprünglichen Schlüssel zuordnet. Schlüssel, die in einigen Datensätzen fehlen oder null sind, werden zu Option<T>. Werte ohne eindeutigen Typ werden zu serde_json::Value. Die Ausgabe für mehrere Beispiele wurde kompiliert und das jeweilige Beispiel mit serde 1 deserialisiert. Läuft zu 100% lokal in deinem Browser, ohne Datei-Uploads zum Server.
- Kategorie
- Entwicklerwerkzeuge
- Ausführungen
- In deinem Browser
- Kosten
- Kostenlos · ohne Anmeldung
- Verfügbarkeit
- Einsatzbereit
Läuft vollständig in deinem Browser
Rust
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Address {
pub city: String,
pub zip_code: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub user_name: String,
pub avatar_url: String,
pub score: f64,
pub tags: Vec<String>,
pub address: Address,
pub manager_id: Option<i64>,
#[serde(default)]
pub nickname: Option<String>,
}
pub type UserList = Vec<User>;
Benötigt die Crates serde (mit dem Feature derive) und serde_json. Feldnamen werden zu snake_case und mit #[serde(rename)] versehen, wenn der Schlüssel abweicht; Schlüssel, die in einigen Objekten fehlen oder null sind, werden zu Option. Zahlen sind i64, sofern ein Beispiel keinen Bruch enthält.
Daten lesen und schreiben
Deserialisiere mit serde_json::from_str::<Root>(&text)? und serialisiere mit serde_json::to_string(&value)?. Unbekannte Schlüssel in der Eingabe werden standardmäßig ignoriert. Füge #[serde(deny_unknown_fields)] zu einer Struktur hinzu, um sie abzulehnen.
Dasselbe Beispiel in Go findest du unter JSON zu Go. Um das Beispiel zuerst aufzuräumen, verwende den JSON-Formatierer.
Option und fehlende Schlüssel
Ein fehlender Schlüssel und ein null-Wert werden bei der Deserialisierung beide zu None für ein Option-Feld. Wenn du sie unterscheiden musst, verwende mit dem serde_with-Crate Option<Option<T>> oder behalte serde_json::Value für dieses Feld bei.
So benutzt du es
- Füge ein JSON-Beispiel ein, idealerweise ein Array mit mehreren typischen Datensätzen.
- Benenne den Typ der obersten Ebene und wähle aus, ob None-Felder beim Serialisieren weggelassen werden.
- Kopiere die Strukturen in dein Crate, das serde und serde_json benötigt.
Datenschutz & Einschränkungen
Das JSON wird in deinem Browser konvertiert und niemals hochgeladen.
Ähnliche Tools
Häufige Fragen
Welche Crates brauche ich?
serde mit dem derive-Feature und serde_json: serde = { version = "1", features = ["derive"] } sowie serde_json = "1" in Cargo.toml.
Warum i64 und f64?
Damit lässt sich jede JSON-Zahl sicher speichern. Verwende u32, u8 oder f32, wenn du den Wertebereich kennst.
Kann ich stattdessen #[serde(rename_all)] verwenden?
Ja: Wenn jeder Schlüssel derselben Konvention folgt, etwa camelCase, ersetzt ein #[serde(rename_all = "camelCase")] an der Struktur die einzelnen Umbenennungen.
Kostenloses Tool · läuft in deinem browser · kein Konto nötig