UTILS.
100% di peramban
🦀

JSON ke Struct Serde Rust

Hasilkan struct Rust dengan derive serde dari contoh JSON, siap untuk Serialize/Deserialize, dengan Option untuk field nullable dan atribut rename.

keluaran

Tentang alat ini

Alat JSON ke Struct Serde Rust mengubah contoh JSON yang ditempel menjadi struct Rust yang diberi anotasi untuk serde, sehingga Anda dapat men-deserialize payload yang sama tanpa menulis setiap field secara manual. Ia mem-parsing JSON, menyimpulkan tipe Rust secara rekursif, dan menghasilkan struct #[derive(Serialize, Deserialize, ...)] per objek: string menjadi String, bilangan bulat i64 (atau u64 ketika semua sampel non-negatif), angka lain f64, boolean bool, array Vec<T>, dan objek bersarang struct PascalCase masing-masing yang didefinisikan sebelum induknya.

Semua pekerjaan terjadi secara lokal di browser Anda dengan JSON.parse dan JavaScript biasa — tidak ada yang diunggah. Field struct dikonversi ke snake_case, dan setiap kali kunci JSON berbeda dari field snake_case, alat menambahkan #[serde(rename = "originalKey")] sehingga struct tetap memetakan ke format wire. Kunci yang tidak ada di sebagian sampel saudara, atau terlihat sebagai null, menjadi Option<T> dengan #[serde(default)] sehingga deserialisasi mentoleransi ketidakhadirannya. Array kosong jatuh ke Vec<serde_json::Value>.

Sakelar lebar-integer beralih antara integer 64-bit (i64/u64, default) dan 32-bit (i32/u32), naik ke 64-bit secara otomatis ketika nilai sampel melebihi rentang 32-bit. Sakelar derive memilih antara set lengkap (Serialize, Deserialize, Debug, Clone) dan minimal Serialize, Deserialize. Berkas dimulai dengan use serde::{Serialize, Deserialize};. Salin atau unduh berkas .rs.

Pertanyaan yang sering diajukan

Bagaimana tipe JSON dipetakan ke Rust?
string ke String, bilangan bulat ke i64 (atau u64 ketika setiap sampel non-negatif), angka non-bulat ke f64, boolean ke bool, array ke Vec<T>, dan objek ke struct bernama dengan derive serde. Field null atau hilang menjadi Option<T> dengan #[serde(default)].
Kapan #[serde(rename)] ditambahkan?
Setiap kali kunci JSON tidak sama dengan nama field snake_case-nya — misalnya kunci userName menghasilkan field user_name dengan #[serde(rename = "userName")], sehingga struct tetap men-deserialize JSON asli persis.
Bisakah saya memilih lebar integer?
Ya. Sakelar lebar menghasilkan integer 64-bit (i64/u64) atau 32-bit (i32/u32). Tanda mengikuti data: sampel yang semuanya non-negatif menggunakan tipe unsigned. Nilai di luar rentang 32-bit dinaikkan ke 64-bit secara otomatis.
Derive apa saja yang disertakan?
Default-nya adalah #[derive(Serialize, Deserialize, Debug, Clone)]; opsi minimal menghasilkan hanya Serialize, Deserialize. Struct anak dideklarasikan sebelum induk yang merujuknya sehingga modul dikompilasi apa adanya.

Alat lainnya