UTILS.
%100 tarayıcıda
🦀

JSON'dan Rust Serde Struct'larına

Bir JSON örneğinden serde derive'leri olan Rust struct'ları üretin; Serialize/Deserialize'a hazır, null alanlar için Option ve rename öznitelikleriyle.

çıktı

Bu araç hakkında

JSON'dan Rust Serde Struct'larına aracı, yapıştırdığınız bir JSON örneğini serde için açıklamalı Rust struct'larına dönüştürür, böylece her alanı elle yazmadan aynı yükü deserialize edebilirsiniz. JSON'u ayrıştırır, Rust tiplerini özyinelemeli olarak çıkarır ve her nesne için bir #[derive(Serialize, Deserialize, ...)] struct üretir: dizeler String olur, tam sayılar i64 (tüm örnekler negatif olmadığında u64), diğer sayılar f64, boole değerleri bool, diziler Vec<T> ve iç içe nesneler ebeveynlerinden önce tanımlanan kendi PascalCase struct'ları olur.

Tüm işlemler tarayıcınızda JSON.parse ve düz JavaScript ile yerel olarak gerçekleşir — hiçbir şey yüklenmez. Struct alanları snake_case'e dönüştürülür ve bir JSON anahtarı snake_case alandan farklı olduğunda araç #[serde(rename = "originalKey")] ekler, böylece struct yine de tel biçimine eşlenir. Bazı kardeş örneklerde bulunmayan veya null olarak görülen anahtarlar, deserialize'ın yokluklarını tolere etmesi için #[serde(default)] ile birlikte Option<T> olur. Boş diziler Vec<serde_json::Value>'a geri döner.

Tam sayı genişliği geçişi, 64-bit (i64/u64, varsayılan) ve 32-bit (i32/u32) tam sayılar arasında geçiş yapar; örneklenen bir değer 32-bit aralığını aştığında otomatik olarak 64-bit'e yükseltir. Derive geçişi, tam küme (Serialize, Deserialize, Debug, Clone) ve minimal bir Serialize, Deserialize arasında seçim yapar. Dosya use serde::{Serialize, Deserialize}; ile başlar. Kopyalayın veya bir .rs dosyası indirin.

Sık sorulan sorular

JSON tipleri Rust'a nasıl eşlenir?
string String'e, tam sayı i64'e (her örnek negatif olmadığında u64), tam sayı olmayan sayı f64'e, boole bool'a, dizi Vec<T>'ye ve nesne serde derive'leri olan adlandırılmış bir struct'a eşlenir. Null veya eksik alanlar #[serde(default)] ile Option<T> olur.
#[serde(rename)] ne zaman eklenir?
JSON anahtarı snake_case alan adına eşit olmadığında — örneğin userName anahtarı, #[serde(rename = "userName")] ile user_name alanını üretir, böylece struct orijinal JSON'u yine de tam olarak deserialize eder.
Tam sayı genişliğini seçebilir miyim?
Evet. Genişlik geçişi 64-bit (i64/u64) veya 32-bit (i32/u32) tam sayılar üretir. İşaretlilik veriyi izler: tümü negatif olmayan örnekler işaretsiz tipi kullanır. 32-bit aralığının ötesindeki değerler otomatik olarak 64-bit'e yükseltilir.
Hangi derive'ler dahil edilir?
Varsayılan #[derive(Serialize, Deserialize, Debug, Clone)]'dur; minimal seçenek yalnızca Serialize, Deserialize üretir. Çocuk struct'lar, onlara başvuran ebeveynlerden önce bildirilir, böylece modül olduğu gibi derlenir.

Daha fazla araç