- Apa Itu Serde?
- Serialize
- Deserialize
- Serialize dan Deserialize Bersamaan
- Attribute Penting pada Serde
- Ringkasan
- Penutup
Halo teman-teman semuanya, pada artikel ini, kita akan membahas salah satu konsep penting dalam ekosistem Rust, yaitu serialize dan deserialize menggunakan Serde.
Konsep ini sangat sering digunakan ketika kita membangun backend, API, maupun aplikasi yang berhubungan dengan pertukaran data.
Apa Itu Serde?
Serde merupakan singkatan dari SERialize dan DEserialize. Serde adalah library di Rust yang digunakan untuk mengubah data Rust ke format lain dan mengubah kembali format tersebut ke data Rust. Format yang umum didukung oleh Serde antara lain:
- JSON
- YAML
- TOML
- MessagePack
- dan format lainnya
Serde menjadi standar de facto di Rust karena cepat, aman, dan fleksibel.
Serialize
-
Apa itu Serialize?
Serialize adalah proses mengubah struktur data Rust menjadi format lain, seperti JSON atau string, agar data tersebut bisa dikirim melalui API, disimpan ke file, disimpan ke databasedan dikirim melalui jaringan.
Secara sederhana:
Struct Rust → JSON / String / Bytes
-
Contoh Serialize dengan Serde
use serde::Serialize; #[derive(Serialize)] struct User { id: u32, name: String, email: String, } fn main() { let user = User { id: 1, name: String::from("Fika"), email: String::from("fika@example.com"), }; let json = serde_json::to_string(&user).unwrap(); println!("{}", json); }Hasil Output:
{"id":1,"name":"Fika","email":"fika@example.com"}Penjelasan
#[derive(Serialize)]digunakan agar struct bisa diserialisasiserde_json::to_string()mengubah struct menjadi JSON string
Deserialize
-
Apa itu Deserialize?
Deserialize adalah proses mengubah data dari format lain (misalnya JSON) menjadi struktur data Rust. Biasanya digunakan ketika menerima request JSON dari frontend, membaca file konfigurasi dan membaca response dari API lain.
Secara sederhana:
JSON / String / Bytes → Struct Rust
-
Contoh Deserialize dengan Serde
use serde::Deserialize; #[derive(Deserialize)] struct User { id: u32, name: String, email: String, } fn main() { let json = r#" { "id": 1, "name": "Fika", "email": "fika@example.com" } "#; let user: User = serde_json::from_str(json).unwrap(); println!("{} - {}", user.name, user.email); }Hasil Output:
Fika - fika@example.comPenjelasan
#[derive(Deserialize)]menandakan struct bisa menerima data dari luarserde_json::from_str()mengubah JSON menjadi struct Rust
Serialize dan Deserialize Bersamaan
Dalam praktik sehari-hari, sebuah struct biasanya mendukung keduanya:
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
struct User {
id: u32,
name: String,
email: String,
}
Struktur seperti ini sangat umum digunakan pada:
- REST API
- Microservices
- Backend menggunakan Axum, Actix, atau Rocket
Attribute Penting pada Serde
Serde menyediakan banyak attribute untuk mengatur perilaku serialisasi dan deserialisasi.
#[derive(Serialize, Deserialize)]
struct User {
id: u32,
#[serde(rename = "full_name")]
name: String,
#[serde(skip_serializing)]
password: String,
#[serde(default)]
age: u8,
}
Penjelasan Attribute
rename→ mengganti nama field di JSONskip_serializing→ field tidak dikirim saat serializedefault→ memberi nilai default jika data tidak tersedia
Ringkasan
| Proses | Fungsi | Arah Data |
|---|---|---|
| Serialize | to_string, to_vec |
Rust → JSON/String |
| Deserialize | from_str, from_slice |
JSON/String → Rust |
Cara mudah mengingatnya:
- Serialize berarti data keluar dari Rust
- Deserialize berarti data masuk ke Rust
Penutup
Serde adalah library yang sangat penting dalam ekosistem Rust, terutama ketika kita bekerja dengan data lintas sistem. Dengan memahami konsep serialize dan deserialize, kita bisa membangun aplikasi Rust yang lebih terstruktur, aman, dan mudah dikembangkan.
Terima Kasih
Blog ini dibaca sebanyak 569 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...