0Pricing
Learn Rust Coding · Ders

Özel Serileştirme

Alan öznitelikleri

Özel Serileştirme, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

serde'yi özelleştirme

serde, öznitelikleri kullanarak alanların bir biçime nasıl eşleneceği üzerinde ayrıntılı denetim sağlar. Alanları yeniden adlandırabilir, atlayabilir, varsayılanlar belirleyebilir ve daha fazlasını yapabilirsiniz; tüm bunlar #[serde(...)] aracılığıyla gerçekleştirilir.

Bir alanı yeniden adlandırma

Bir Rust alan adını çıktıda farklı bir anahtara eşlemek için rename kullanın. Bu, JSON farklı bir adlandırma kuralı kullandığında yararlıdır.

use serde::Serialize;

#[derive(Serialize)]
struct User {
    #[serde(rename = "userName")]
    user_name: String,
}

Her şeyi yeniden adlandırma

rename_all ile tüm alanlara aynı anda bir adlandırma kuralı uygulayın; örneğin snake_case Rust adlarını camelCase JSON adlarına dönüştürün.

use serde::Serialize;

#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
struct User {
    first_name: String,
    last_name: String,
}

Alanları atlama

skip bir alanı tamamen çıkarır. skip_serializing_if ise alanı koşula bağlı olarak çıkarır; örneğin boş seçenekleri gizleyebilir.

use serde::Serialize;

#[derive(Serialize)]
struct User {
    name: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    nickname: Option<String>,
}

Deserialize sırasında varsayılan değerler

default, bir alan girdide eksik olduğunda değer sağlar; böylece serileştirmeden çıkarma işlemi başarısız olmaz.

use serde::Deserialize;

#[derive(Deserialize)]
struct Config {
    #[serde(default)]
    retries: u32,
}

Özel varsayılan işlev

Sıfır olmayan bir geri dönüş değeri sağlamak için default'u bir işleve yönlendirin.

use serde::Deserialize;

fn default_port() -> u16 { 8080 }

#[derive(Deserialize)]
struct Config {
    #[serde(default = "default_port")]
    port: u16,
}

Yeniden adlandırma ve varsayılanı modelleme

Öznitelik mantığı yalnızca anahtar eşleme ve geri dönüş değerinden oluşur. Bu çalıştırılabilir örnek, bu davranışı bir HashMap ile yansıtır.

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);
}

Deserialize sırasında diğer adlar

alias, okuma sırasında alternatif bir anahtarı kabul eder; hem eski hem de yeni alan adlarını desteklerken yararlıdır.

use serde::Deserialize;

#[derive(Deserialize)]
struct User {
    #[serde(alias = "username")]
    name: String,
}

Düzleştirme

flatten, iç içe bir yapının alanlarını üst nesnenin içine yerleştirerek JSON'daki bir iç içelik düzeyini kaldırır.

use serde::Serialize;

#[derive(Serialize)]
struct Meta { page: u32 }

#[derive(Serialize)]
struct Resp {
    data: String,
    #[serde(flatten)]
    meta: Meta,
}

Modülle özel işlem

Tam denetim için serialize ve deserialize işlevlerini sunan bir modüle with ile yönlendirin; örneğin bir zaman damgasını biçimlendirmek için.

use serde::Serialize;

#[derive(Serialize)]
struct Event {
    #[serde(with = "my_date_format")]
    at: i64,
}

Enum etiketleme

Enum'ların tag (iç etiketli) veya untagged ile nasıl kodlanacağını denetleyin. Bu, varyant türleri için JSON'un şeklini belirler.

use serde::Serialize;

#[derive(Serialize)]
#[serde(tag = "type")]
enum Event {
    Click { x: i32, y: i32 },
    Key { code: u8 },
}

Hızlı Kontrol

Özel serileştirmeyi anlayıp anlamadığınızı test edin.

Özet

Serileştirmeyi özelleştirmeyi öğrendiniz:

  • rename ve rename_all alan adlarını eşler
  • skip, skip_serializing_if çıktıyı denetler
  • default ve alias serileştirmeden çıkarma işlemini kolaylaştırır
  • flatten, with ve enum tag şekli yönetir

Sırada: JSON dışındaki biçimler.

Sıkça Sorulan Sorular

“Özel Serileştirme” dersi ücretsiz mi?

Evet — “Özel Serileştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“Özel Serileştirme” dersinde ne öğreneceğim?

Alan öznitelikleri Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Özel Serileştirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Serileştirme ve Serileştirmeyi Geri Alma
  2. JSON ile Çalışma
  3. Özel Serileştirme
  4. Diğer Biçimler
← Learn Rust Coding Sayfasına Dön