Geliştirici / Türler
JSON'dan Rust Struct Dönüştürücü
Bir JSON örneğini; serde'nin Serialize ve Deserialize türetmelerini kullanan, snake_case alanlara, yeniden adlandırmalara, eksik veya null anahtarlar için Option'a ve diziler için Vec'e sahip Rust struct'larına dönüştürün.
JSON'dan Rust Struct Dönüştürücü: Her nesne, herkese açık alanlara sahip bir struct'a dönüştürülür. Anahtarlar snake_case biçimine çevrilir; JSON'daki yazım farklıysa #[serde(rename = "…")] eklenir. type gibi Rust anahtar sözcükleri, serde'nin otomatik olarak özgün adlarına eşlediği ham tanımlayıcılara (r#type) dönüştürülür. Bazı kayıtlarda eksik veya null olan anahtarlar Option<T> olur; türü net olmayan değerler ise serde_json::Value olarak bırakılır. Birden çok örnek için oluşturulan çıktı derlendi ve örneği serde 1 ile deserialize edildi. Sunucuya hiçbir dosya yüklenmeden tarayıcınızda %100 yerel olarak çalışır.
- Kategori
- Geliştirici araçları
- Çalıştırma sayısı
- Tarayıcınızda
- Maliyet
- Ücretsiz · kayıt gerekmez
- Kullanılabilirlik
- Kullanıma hazır
Tamamen tarayıcınızda çalışır
Rust
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Address {
pub city: String,
pub zip_code: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub user_name: String,
pub avatar_url: String,
pub score: f64,
pub tags: Vec<String>,
pub address: Address,
pub manager_id: Option<i64>,
#[serde(default)]
pub nickname: Option<String>,
}
pub type UserList = Vec<User>;
serde (derive özelliğiyle) ve serde_json paketleri gerekir. Anahtarın farklı olduğu durumlarda alan adları #[serde(rename)] kullanılarak snake_case biçimine dönüştürülür; bazı nesnelerde bulunmayan veya null olan anahtarlar Option olur. Bir örnekte kesir bulunmadıkça sayılar i64 olur.
Verileri okuma ve yazma
serde_json::from_str::<Root>(&text)? ile serileştirmeyi kaldırın ve serde_json::to_string(&value)? ile serileştirin. Girdideki bilinmeyen anahtarlar varsayılan olarak yok sayılır; bunları reddetmek için bir yapıya #[serde(deny_unknown_fields)] ekleyin.
Aynı örneği Go'da görmek için JSON to Go sayfasına bakın; örneği önce düzenlemek için JSON biçimlendiriciyi kullanın.
Option ve eksik anahtarlar
Eksik bir anahtar ile null değer, Option alanı için None olarak serileştirmeden çıkar. Bunları birbirinden ayırmanız gerekiyorsa serde_with crate'i ile Option<Option<T>> kullanın veya bu alan için serde_json::Value değerini koruyun.
Nasıl kullanılır?
- Tercihen birkaç tipik kayıt içeren bir dizi olacak şekilde JSON örneğini yapıştırın.
- Üst düzey türü adlandırın ve serileştirme sırasında None alanlarının çıkarılıp çıkarılmayacağını seçin.
- serde ve serde_json gerektiren crate'inize struct'ları kopyalayın.
Gizlilik ve sınırlamalar
JSON, tarayıcınızda dönüştürülür ve hiçbir zaman yüklenmez.
İlgili araçlar
Sık sorulan sorular
Hangi crate'lere ihtiyacım var?
derive özelliği etkinleştirilmiş serde ve serde_json gerekir: Cargo.toml içinde serde = { version = "1", features = ["derive"] } ve serde_json = "1".
Neden i64 ve f64 kullanılıyor?
Bunlar tüm JSON sayılarını güvenli biçimde tutar. Aralığı bildiğiniz durumlarda u32, u8 veya f32 türlerine daraltın.
Bunun yerine #[serde(rename_all)] kullanabilir miyim?
Evet: Her anahtar aynı kuralı, örneğin camelCase kuralını kullanıyorsa struct üzerine eklenen tek bir #[serde(rename_all = "camelCase")] ayrı ayrı yeniden adlandırmaların yerini alır.
Ücretsiz araç · tarayıcınızda kez çalıştırma · hesap gerekmez