Pengembang / Jenis

Konverter JSON ke Struct Rust

Ubah contoh JSON menjadi struct Rust dengan derive Serialize dan Deserialize dari serde, field snake_case, rename, Option untuk key yang hilang atau null, serta Vec untuk array.

Konverter JSON ke Struct Rust: Setiap objek menjadi struct dengan field publik. Key diubah menjadi snake_case, dengan #[serde(rename = "…")] jika ejaan JSON berbeda, dan keyword Rust seperti type menjadi raw identifier (r#type), yang secara otomatis dipetakan kembali oleh serde. Key yang hilang atau null pada beberapa record menjadi Option<T>, sedangkan nilai yang tipenya tidak jelas menjadi serde_json::Value. Output untuk beberapa contoh telah dikompilasi, dan contoh tersebut telah dideserialisasi dengan serde 1. Berjalan 100% lokal di browser Anda tanpa upload file ke server.

Dijalankan
Di browser Anda
Biaya
Gratis · tanpa daftar
Ketersediaan
Siap digunakan
JSON ke RustPemrosesan lokal

Berjalan sepenuhnya di browser Anda

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>;

Memerlukan crate serde (dengan fitur derive) dan serde_json. Nama field menjadi snake_case dengan #[serde(rename)] jika key-nya berbeda; key yang tidak ada atau bernilai null pada beberapa objek menjadi Option. Angka menjadi i64 kecuali jika sampelnya memiliki pecahan.

Membaca dan menulis data

Lakukan deserialisasi dengan serde_json::from_str::<Root>(&text)? dan serialisasi dengan serde_json::to_string(&value)?. Key yang tidak dikenal dalam input akan diabaikan secara default; tambahkan #[serde(deny_unknown_fields)] ke struct untuk menolaknya.

Untuk sample yang sama dalam Go, lihat JSON to Go; untuk merapikan sample terlebih dahulu, gunakan JSON formatter.

Option dan key yang hilang

Key yang hilang dan nilai null sama-sama dideserialisasi menjadi None untuk field Option. Jika Anda perlu membedakan keduanya, gunakan Option<Option<T>> dengan crate serde_with, atau tetap gunakan serde_json::Value untuk field tersebut.

Cara menggunakannya

  1. Tempel contoh JSON, idealnya berupa array dengan beberapa record yang umum.
  2. Beri nama type tingkat teratas, lalu pilih apakah field bernilai None akan dihilangkan saat serialisasi.
  3. Salin struct ke crate Anda, yang memerlukan serde dan serde_json.

Privasi & batasan

JSON dikonversi di browser Anda dan tidak pernah di-upload.

Alat terkait

Pertanyaan umum

Crate apa yang saya perlukan?

serde dengan fitur derive, serta serde_json: serde = { version = "1", features = ["derive"] } dan serde_json = "1" di Cargo.toml.

Mengapa i64 dan f64?

Keduanya dapat menyimpan angka JSON apa pun dengan aman. Ubah ke u32, u8, atau f32 jika Anda mengetahui rentangnya.

Bisakah saya menggunakan #[serde(rename_all)] sebagai gantinya?

Ya: jika setiap key menggunakan konvensi yang sama, seperti camelCase, satu #[serde(rename_all = "camelCase")] pada struct menggantikan rename individual.

Alat gratis · berjalan di browser anda · tanpa perlu akun