Ö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:
renameverename_allalan adlarını eşlerskip,skip_serializing_ifçıktıyı denetlerdefaultvealiasserileştirmeden çıkarma işlemini kolaylaştırırflatten,withve enumtagş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.