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.

Ausführungen
In deinem Browser
Kosten
Kostenlos · ohne Anmeldung
Verfügbarkeit
Einsatzbereit
JSON zu RustLokale Verarbeitung

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

  1. Füge ein JSON-Beispiel ein, idealerweise ein Array mit mehreren typischen Datensätzen.
  2. Benenne den Typ der obersten Ebene und wähle aus, ob None-Felder beim Serialisieren weggelassen werden.
  3. 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