Serialisasi Kustom
Atribut field
Serialisasi Kustom adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.
Menyesuaikan serde
serde memberi kendali terperinci atas pemetaan field ke suatu format menggunakan atribut. Anda dapat mengganti nama field, melewatinya, menetapkan nilai default, dan lainnya, semuanya melalui #[serde(...)].
Mengganti nama field
Gunakan rename untuk memetakan nama field Rust ke kunci lain dalam keluaran, terutama saat JSON menggunakan konvensi yang berbeda.
use serde::Serialize;
#[derive(Serialize)]
struct User {
#[serde(rename = "userName")]
user_name: String,
}Mengganti semua nama
Terapkan konvensi penamaan ke semua field sekaligus dengan rename_all, misalnya snake_case Rust menjadi camelCase JSON.
use serde::Serialize;
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
struct User {
first_name: String,
last_name: String,
}Melewati field
skip menghilangkan suatu field sepenuhnya. skip_serializing_if menghilangkannya secara bersyarat, misalnya untuk menyembunyikan opsi yang kosong.
use serde::Serialize;
#[derive(Serialize)]
struct User {
name: String,
#[serde(skip_serializing_if = "Option::is_none")]
nickname: Option<String>,
}Nilai default saat deserialize
default menyediakan nilai saat suatu field tidak ada dalam masukan, sehingga deserialisasi tidak gagal.
use serde::Deserialize;
#[derive(Deserialize)]
struct Config {
#[serde(default)]
retries: u32,
}Fungsi default khusus
Arahkan default ke suatu fungsi untuk menyediakan nilai cadangan yang bukan nol.
use serde::Deserialize;
fn default_port() -> u16 { 8080 }
#[derive(Deserialize)]
struct Config {
#[serde(default = "default_port")]
port: u16,
}Memodelkan rename + default
Logika atribut hanyalah pemetaan kunci ditambah nilai cadangan. Contoh yang dapat dijalankan ini mencerminkan perilaku tersebut dengan HashMap.
use std::collections::HashMap;
fn main() {
let mut input: HashMap<&str, &str> = HashMap::new();
input.insert("userName", "Alice");
let user_name = input.get("userName").copied().unwrap_or("anon");
let port = input.get("port").copied().unwrap_or("8080");
println!("user_name={} port={}", user_name, port);
}Alias saat deserialize
alias menerima kunci alternatif saat membaca, berguna ketika mendukung nama field lama dan baru.
use serde::Deserialize;
#[derive(Deserialize)]
struct User {
#[serde(alias = "username")]
name: String,
}Meratakan
flatten menyisipkan field struct bertingkat ke dalam objek induk, sehingga satu tingkat penyarangan dalam JSON dihilangkan.
use serde::Serialize;
#[derive(Serialize)]
struct Meta { page: u32 }
#[derive(Serialize)]
struct Resp {
data: String,
#[serde(flatten)]
meta: Meta,
}Kustom dengan modul
Untuk kendali penuh, arahkan with ke modul yang menyediakan fungsi serialize dan deserialize, misalnya untuk memformat stempel waktu.
use serde::Serialize;
#[derive(Serialize)]
struct Event {
#[serde(with = "my_date_format")]
at: i64,
}Pemberian tag pada enum
Atur cara enum dikodekan dengan tag (diberi tag secara internal) atau untagged. Ini menentukan bentuk JSON untuk tipe varian.
use serde::Serialize;
#[derive(Serialize)]
#[serde(tag = "type")]
enum Event {
Click { x: i32, y: i32 },
Key { code: u8 },
}Pemeriksaan Singkat
Uji pemahaman Anda tentang serialisasi khusus.
Rangkuman
Anda telah mempelajari cara menyesuaikan serialisasi:
renamedanrename_allmemetakan nama fieldskip,skip_serializing_ifmengatur keluarandefaultdanaliasmempermudah deserialisasiflatten,with, dantagpada enum menangani bentuk data
Selanjutnya: format selain JSON.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Serialisasi Kustom” gratis?
Ya — teks lengkap “Serialisasi Kustom” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Serialisasi Kustom”?
Atribut field Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?
Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Serialisasi Kustom” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?
Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Serialisasi dan Deserialisasi
- Bekerja dengan JSON
- Serialisasi Kustom
- Format Lain