JSON ke Struct Rust (serde)
Buat struct Rust dengan derive serde Serialize/Deserialize, field snake_case, atribut rename, Option untuk null, dan Vec untuk array dari JSON. Gratis.
Membutuhkan crate serde (dengan derive) dan serde_json. Field ditulis snake_case dengan #[serde(rename)] bila kunci JSON berbeda.
Berjalan sepenuhnya di browser Anda. Data Anda tidak pernah diunggah.
Alat Terkait
Lihat SemuaApa itu JSON ke Rust?
Tempel JSON dan dapatkan definisi struct Rust yang mendeserialisasinya dengan serde. Setiap struct men-derive Debug, Clone, Serialize, Deserialize; nama field berupa snake_case dan mempertahankan key asli dengan #[serde(rename = "…")] bila perlu.
Cara menggunakan JSON ke Rust
- Tempel contoh JSON ke Input JSON (atau klik Muat contoh / Buka file).
- Atur Nama tipe root (bawaan
Root). - Salin kode Rust yang dihasilkan atau Unduh sebagai file.
Contoh
{"id":1,"name":"A","tags":["x"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub tags: Vec<String>,
} Kapan menggunakan JSON ke Rust
Gunakan saat menulis klien atau CLI Rust yang membaca JSON. Sempurnakan tipenya setelahnya – misalnya u32 untuk hitungan kecil atau tipe chrono untuk timestamp – karena satu contoh tidak dapat memberi tahu rentang sebenarnya.
Cara kerja JSON ke Rust
Contoh JSON ditelusuri secara rekursif dan setiap posisi mengumpulkan tipe yang pernah dilihatnya. Array berisi objek digabung menjadi satu tipe: key yang tidak ada di sebagian elemen menjadi opsional, key yang bernilai null di suatu tempat menjadi nullable, bilangan bulat yang bercampur dengan desimal menjadi tipe floating-point, dan campuran tipe lain beralih ke tipe dinamis. Objek bersarang menjadi tipe bernama sendiri (PascalCase dari key, key array disingularkan: orders → Order), dengan akhiran angka jika nama bentrok. Keluaran Rust memetakan bilangan bulat ke i64, desimal ke f64, string ke String, boolean ke bool, array ke Vec<T>, nilai nullable ke Option<T>, dan nilai dinamis atau yang hanya null ke serde_json::Value. Field yang hilang di sebagian contoh menjadi Option<T> dengan #[serde(default, skip_serializing_if = "Option::is_none")]. Keyword seperti type ditulis sebagai raw identifier (r#type).
Kasus Penggunaan Umum
- Mendeserialisasi respons REST API dengan reqwest + serde
- Memodelkan file konfigurasi JSON untuk alat CLI
- Membuat tipe untuk handler webhook
- Mengonversi fixture untuk pengujian integrasi Rust
Pertanyaan Umum
Crate apa yang saya butuhkan?
serde dengan fitur derive dan serde_json: serde = { version = "1", features = ["derive"] } dan serde_json = "1".
Mengapa serde_json::Value?
Dipakai ketika sebuah key mencampur tipe atau selalu null dalam contoh, sehingga tidak ada tipe Rust konkret yang dapat dipilih dengan aman.
Mengapa r#type?
type adalah keyword Rust; sintaks raw identifier memungkinkan Anda memakainya sebagai nama field sementara serde tetap mencocokkan key JSON.