Rust'ta seri hale getirme ve serisini kaldırma tekniklerini kullanarak verileri zahmetsizce JSON formatı ile Rust nesneleri arasında dönüştürmeyi öğrenin.

JSON (JavaScript Object Notation), yazılımda popüler bir veri değişim formatı olarak ortaya çıkmıştır. basitliği, okunabilirliği ve çeşitli programlamalarda yaygın desteği nedeniyle geliştirme Diller. JSON, bir sunucu ile bir web uygulaması arasında veya farklı yazılım sistemi bileşenleri arasında veri aktarımı için XML'e hafif bir alternatiftir.

JSON ile çalışmanın en önemli yönlerinden biri seri hale getirme ve seriden kaldırma işlemidir. JSON verilerini, kendi içinde kolayca değiştirebileceğiniz yapılandırılmış bir biçime dönüştürmenize olanak tanır. programlar. Çoğu zaman, başka dillerde JSON ile çalışmak istiyorsanız, JSON verilerini dilin yerleşik veri yapılarında serileştirmeniz ve seri durumundan kaldırmanız gerekebilir.

Serde'ye Başlarken

Serde (seri hale getirme ve seriyi kaldırma), dönüştürmek için bir çerçeve sağlayan, yaygın olarak kullanılan bir Rust kitaplığıdır.

instagram viewer
Rust veri yapıları depolama, iletim, paylaşım ve diğerleri için biçimlere dönüştürür.

Serde, Rust veri türleri ile JSON, YAML, BSON, CBOR, MessagePack ve diğerleri dahil olmak üzere çeşitli veri değişim biçimleri arasında sorunsuz dönüşüm sağlar.

Serde'nin birincil odak noktası, güçlü yazma ve güvenlik özelliklerini korurken, seri hale getirme ve seri durumdan çıkarma sürecini olabildiğince basit ve verimli hale getirmektir.

Bu direktifleri şuraya ekleyin: bağımlılıklar senin bölümün Kargo.toml yüklemek ve kullanmak için dosya Serde olarak Kargo ile üçüncü taraf bağımlılığı.

[bağımlılıklar]
serde = { sürüm = "1.0.159", özellikler = ["türetmek"] }
serde_json = "1.0.96"

ikisine de ihtiyacınız olacak serde Ve serde_json JSON ile etkileşime geçmek için kasalar. bu serde sandık temel işlevleri sağlar ve serde_json sandık, JSON ile çalışmak için özel bir Serde uygulamasıdır.

Şu şekilde içe aktarabilirsiniz: serde_json sandık ve serileştirme Ve seri durumdan çıkar gelen modüller serde sandık:

kullanmak serde::{Serialize, Serialize};
kullanmak serde_json;

Genel olarak, Rust'ta JSON ile çalışıyorsanız Serde, geliştirme cephaneliğinizde ihtiyaç duyacağınız güçlü bir araçtır.

Serde ile Veri Serileştirme

JSON seri hale getirme işlemi, diğer işlemler için bir Rust türünün (özel veya yerleşik) JSON'a dönüştürülmesini gerektirir. Serde, seri hale getirme işlemi üzerinde hassas kontrol sağlamak için Rust struct ile kullanabileceğiniz bir dizi öznitelik sağlar. #[türet (Serileştir)] veri yapılarınız için serileştirme kodu oluşturmanıza ve Rust yapınızı JSON'a dönüştürmenize olanak tanıyan öznitelik.

Bir kişinin biyo-verisini temsil eden bu yapıyı düşünün; şu şekilde içe aktarabilir ve kullanabilirsiniz: serileştirme yapıdaki öznitelik:

kullanmak serde::{Serialize, Serialize};
kullanmak serde_json;

#[türet (Serileştir)]
yapıKişi {
isim: Sicim,
yaş: u32,
}

Açıklama yaparak Kişi ile yapı [#türet (Serileştir)], Serde'ye gerekli serileştirme kodunu oluşturmasını söylüyorsunuz. Kişi otomatik olarak yapılandırın.

Bir örneğini şu şekilde seri hale getirebilirsiniz: Kişi JSON'a yapı:

kullanmak serde::{Serileştir};
kullanmak serde_json;

fnana() {
// Kişi yapı örneğinin ad ve yaş alanlarıyla bildirimi
izin vermek kişi = Kişi {
isim: "Çukwuemeriwo".to_string(),
yaş: 28,
};

// kişi yapısını serde_json kitaplığını kullanarak JSON'a serileştirir
izin vermek json = serde_json:: to_string(&person).expect("Serileştirme başarısız oldu");

// seri hale getirilmiş JSON dizesini yazdırır
yazdır!("Serileştirilmiş JSON: {}", json);
}

İçinde ana işlev, serde_json sandık serileştirir kişi nesne. bu to_string işlev şuna bir başvuru alır: kişi nesne ve seri hale getirilmiş verileri temsil eden bir JSON dizesi döndürür.

Son olarak, ana işlevi seri hale getirilmiş JSON'u konsola yazdırır.

bu serde Ve serde_json çok yönlüdür, ayrıca dizileri serde ile seri hale getirebilirsiniz.

kullanmak serde::{Serialize, Serialize};
kullanmak serde_json;

#[türet (Serileştir)]
yapıkoordinatlar {
X: f32,
sen: f32,
}

fnana() {
izin vermek puan = vec![
Koordinatlar X: 1.0, y: 2.0 },
Koordinatlar X: 3.5, y: 4.5 },
];

izin vermek json = serde_json:: to_string(&points).expect("Serileştirme başarısız oldu");

yazdır!("Serileştirilmiş JSON: {}", json); // Serileştirilmiş JSON dizesini yazdır
}

bu puan değişken bir vektördür koordinatlar bir düzlemdeki noktaları temsil eden yapılar. Uygulamak serileştirme öznitelik koordinatlar struct, vektörü zahmetsizce JSON'a seri hale getirmenize olanak tanır.

Ek olarak, enums'ları JSON ile seri hale getirebilirsiniz. serde yapıları ve vektörleri serileştirmeniz gibi.

kullanmak serde::{Serialize, Serialize};
kullanmak serde_json;

#[türet (Serileştir, Serileştir)]
SıralamaHayvan {
Köpek(Sicim),
Kedi(u32),
Kuş,
}

fnana() {
izin vermek köpek = Hayvan:: Köpek("Paslı".to_string());

izin vermek json = serde_json:: to_string(&dog).expect("Serileştirme başarısız oldu");

yazdır!("Serileştirilmiş JSON: {}", json);
}

Varyanta bağlı olarak, serileştirme işlemi buna göre uyarlanır (bu durumda, Hayvan:: Köpek varyantı içerir Sicim Serde'nin bir JSON dizisi olarak serileştireceği alan).

Serde ile Veri Serileştirme

JSON serisini kaldırma, JSON verilerini bir programlama dilinin yerel veri türlerine dönüştürme işlemidir. Serde, çoğu yerleşik veri türünde çalışan JSON serisini kaldırma için kapsamlı bir çerçeve sağlar.

Serileştirmeye benzer şekilde Serde, Rust yapılarınızı seriden çıkarma işlemi için açıklama eklemek için kullanabileceğiniz öznitelikler sunar. Serileştirme için yaygın olarak kullanılan iki öznitelik, #[türet (Seriyi Kaldır)] Ve #[serde (rename = "json_field_name")] Öznitellikler.

bu #[türet (Seriyi Kaldır)] özniteliği, sizin için seri hale getirme uygulamasını otomatik olarak türetir. Pas yapı türleri, iken #[serde (rename = "json_field_name")] niteliği, yapı alanlarını karşılık gelen JSON alan adlarıyla eşlemenizi sağlar.

Serde ile JSON verilerini özel bir yapı türüne şu şekilde seri hale getirebilirsiniz:

kullanmak serde:: Deserialize;
kullanmak serde_json;

// Serde'den Deserialize özelliğine sahip Person için bir yapı tanımlar
#[türet (Seriyi Kaldır)]
yapıKişi {
#[serde (yeniden adlandır = "isim")]// alanı "isim" olarak yeniden adlandırır
Ad Soyad: Sicim,
yaş: u32,
}

fnana() {
izin vermek json_data = r#"
{
"isim": "John Doe",
"yaş": 30
}
"#;

// JSON verilerini bir Kişi yapısına seri hale getirir
izin vermek kişi: Kişi = serde_json:: from_str (json_data).unwrap();

// Kişinin tam adını ve yaşını yazdır
yazdır!("İsim: {}", kişi.tam_adı);
yazdır!("Yaş: {}", kişi.yaş);
}

Açıklama yaparak Kişi ile yapı #[türet (Seriyi Kaldır)] özniteliği, Serde'nin yapıyı JSON'dan seri hale getirebileceğini belirtirsiniz. bu #[serde (yeniden adlandır = "isim")] öznitelik eşler isim JSON'daki alana Ad Soyad alan.

bu from_str işlev seriyi kaldırır json_data içine değişken kişi nesne ve ana işlevi alanları konsola yazdırır.

Serde, ilkel türler, numaralandırmalar, iç içe yapılar ve koleksiyonlar dahil olmak üzere çeşitli Rust veri türlerinde serileştirmeyi destekler.

Bir JSON dizisini, bir vektör alanı içeren bir Rust yapısına şu şekilde seri hale getirebilirsiniz:

kullanmak serde:: Deserialize;

#[türet (Seriyi Kaldır)]
yapıVeri {
sayılar: Vec<u32>,
}

fnana() {
izin vermek json_data = r#"
{
"sayılar": [1, 2, 3, 4, 5]
}
"#;

izin vermek veri: Veri = serde_json:: from_str (json_data).unwrap();

için sayı içinde veri.sayılar {
yazdır!("Sayı: {}", sayı);
}
}

bu ana işlev seriyi kaldırır json_data JSON içeriği veri değişken ve döngü, vektördeki öğeleri yazdırır.

Seri durumdan çıkarma işlemi için doğru veri türlerine ve tanımlayıcılara sahip olduğunuzdan emin olmalısınız.

Serde, Popüler Rust Web Çerçeveleriyle Birlikte Çalışıyor

Serde, birçok özelliğe sahip güçlü bir kitaplık ve verileri farklı biçimlerde seri hale getirmek ve seri durumundan çıkarmak için basit bir API'dir.

Serde, Rust ekosisteminde geniş çapta benimsenmiştir ve birçok popüler sandık ve çerçeve, yerleşik Actix, Warp ve Rocket gibi popüler web çerçeveleri ve aşağıdakiler gibi veritabanı ORM'leri dahil olmak üzere Serde desteği Dizel.