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.

Çalıştırma sayısı
Tarayıcınızda
Maliyet
Ücretsiz · kayıt gerekmez
Kullanılabilirlik
Kullanıma hazır
JSON'dan Rust'aYerel işleme

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?

  1. Tercihen birkaç tipik kayıt içeren bir dizi olacak şekilde JSON örneğini yapıştırın.
  2. Ü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.
  3. 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