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.
- Kategori
- Tools developer
- Dijalankan
- Di browser Anda
- Biaya
- Gratis · tanpa daftar
- Ketersediaan
- Siap digunakan
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
- Tempel contoh JSON, idealnya berupa array dengan beberapa record yang umum.
- Beri nama type tingkat teratas, lalu pilih apakah field bernilai None akan dihilangkan saat serialisasi.
- 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