0Pricing
Learn Rust Coding · Pelajaran

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:

  • rename dan rename_all memetakan nama field
  • skip, skip_serializing_if mengatur keluaran
  • default dan alias mempermudah deserialisasi
  • flatten, with, dan tag pada 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

  1. Serialisasi dan Deserialisasi
  2. Bekerja dengan JSON
  3. Serialisasi Kustom
  4. Format Lain
← Kembali ke Learn Rust Coding