İçeriğe atla
%100 yerel

JSON'dan Rust Yapısı

JSON belgesini serde ile uyumlu Rust yapılarına dönüştür.

Giriş
Çıkış

JSON'dan Rust Yapısı

Bir JSON nesnesini veya dizisini yapıştır, ve bu araç eşleşen Rust yapılarını oluşturur, bunları doğrudan serde serileştirmesi kullanan bir projeye bırakabilirsin. API yanıtı veya yapılandırma dosyası her değiştiğinde manuel tür tanımları ve derive öznitelikleri yazma zahmetinden seni kurtarır.

Seçenekler, oluşturulan kodun nasıl göründüğünü kontrol eder. Hangi trait'ları türetmek istediğini seç — Debug, Clone, Serialize, Deserialize, PartialEq — ve snake_case Rust alanlarının camelCase JSON anahtarlarından doğru şekilde deserialize olması için #[serde(rename_all = "camelCase")] eklensin mi? Null değerler otomatik olarak Option<T> olabilir, tamsayılar için i32, i64 veya u64 ve metin için String veya ödünç alınan &str (yaşam süresiyle) seçebilirsin. İç içe nesneler ayrı üst düzey yapılar olarak veya kendi pub mod'larına sarılı olarak oluşturulabilir ve alanlar genel veya özel olabilir.

Nesne dizileri tek bir yapıya birleştirilir: yalnızca bazı öğelerde mevcut olan bir alan otomatik olarak Option<T> olur, bu nedenle bir avuç örnek kaydından oluşturulan bir yapı hala tüm veri kümesine uyar. Alan adları snake_case'e dönüştürülür, Rust anahtar sözcükleri r#type gibi ham tanımlayıcılara dönüştürülür ve temiz bir şekilde temsil edilemeyen bir ad yerine orijinal anahtarı #[serde(rename = "...")] özniteliğiyle korur.

Her şey tarayıcında yerel olarak çalışır — JSON'un hiçbir yere yüklenmez, bu nedenle gerçek API yüklerini veya yapılandırma verilerini güvenle yapıştırabilisin. Oluşturulan kodu kopyala, .txt dosyası olarak indir, veya daha fazla iyileştirme için çıktıyı giriş alanına gönder.

FAQ

Serde'yi kurar veya Cargo.toml'ye ekler mi?
Hayır. Sadece struct kodunu oluşturur. Serde'yi derive özelliğiyle ayrı ayrı Cargo.toml'ne ekle: serde = { version = "1", features = ["derive"] }.
Bazı kayıtlarda null olan ve diğerlerinde mevcut olan bir alana ne olur?
"Null alanları Option<T> ile sarma" açık olduğunda, o alan Option<T> olur, böylece mevcut, null veya eksik olup olmadığına bakılmaksızın doğru şekilde deserialize olur.
Bir alan neden #[serde(rename = "...")] özniteliğini alır?
Bu, camelCase yeniden adlandırması kapalı olduğunda ve JSON anahtarı oluşturulan snake_case Rust alan adıyla eşleşmediğinde görünür, bu nedenle orijinal anahtar deserializasyon için korunur.
Üst düzeyde bir diziden yapı oluşturabilir mi?
Evet. Bir nesne dizisi pub type Root = Vec<Item>; gibi bir tür takma adı oluşturur, ayrıca Item yapısı da dahil olmak üzere dizideki tüm öğelerin alanlarını birleştirir.
JSON'um bir yere yüklendi mi?
Hayır. Yapı oluşturma tamamen tarayıcında çalışır — JSON'un hiçbir zaman cihazını terk etmez.