UTILS.
۱۰۰٪ در مرورگر
🦀

تبدیل JSON به استراکت‌های Serde راست

از یک نمونه JSON استراکت‌های Rust با derive‌های serde بسازید، آماده برای Serialize/Deserialize، با Option برای فیلدهای nullable و ویژگی‌های rename.

خروجی

درباره این ابزار

ابزار تبدیل JSON به استراکت‌های Serde راست یک نمونه JSON چسبانده‌شده را به استراکت‌های Rust حاشیه‌نویسی‌شده برای serde تبدیل می‌کند، تا بتوانید همان payload را بدون نوشتن دستی هر فیلد دیسریالایز کنید. JSON را تجزیه می‌کند، انواع Rust را به‌صورت بازگشتی استنتاج می‌کند و برای هر شیء یک استراکت #[derive(Serialize, Deserialize, ...)] تولید می‌کند: رشته‌ها به String، اعداد صحیح به i64 (یا u64 هنگامی که همه نمونه‌ها نامنفی هستند)، سایر اعداد به f64، بولین‌ها به bool، آرایه‌ها به Vec<T>، و اشیای تودرتو به استراکت‌های PascalCase خودشان که پیش از والدینشان تعریف می‌شوند.

همه کار به‌صورت محلی در مرورگر شما با JSON.parse و JavaScript ساده رخ می‌دهد — هیچ چیز بارگذاری نمی‌شود. فیلدهای استراکت به snake_case تبدیل می‌شوند، و هرگاه یک کلید JSON با فیلد snake_case متفاوت باشد، ابزار #[serde(rename = "originalKey")] اضافه می‌کند تا استراکت همچنان به قالب سیم نگاشت شود. کلیدهایی که در برخی نمونه‌های خواهر-برادر غایب هستند یا به‌صورت null دیده می‌شوند، به Option<T> با #[serde(default)] تبدیل می‌شوند تا دیسریالایز کردن، غیبت آن‌ها را تحمل کند. آرایه‌های خالی به Vec<serde_json::Value> برمی‌گردند.

کلید تغییر عرض-عدد-صحیح بین اعداد صحیح ۶۴-بیتی (i64/u64، پیش‌فرض) و ۳۲-بیتی (i32/u32) جابه‌جا می‌شود و هنگامی که یک مقدار نمونه‌گیری‌شده از محدوده ۳۲-بیتی فراتر رود به‌طور خودکار به ۶۴-بیتی ارتقا می‌یابد. کلید تغییر derive بین مجموعه کامل (Serialize, Deserialize, Debug, Clone) و یک Serialize, Deserialize حداقلی انتخاب می‌کند. فایل با use serde::{Serialize, Deserialize}; آغاز می‌شود. آن را کپی کنید یا یک فایل .rs دانلود کنید.

پرسش‌های پرتکرار

انواع JSON چگونه به Rust نگاشت می‌شوند؟
string به String، عدد صحیح به i64 (یا u64 هنگامی که هر نمونه نامنفی است)، عدد غیرصحیح به f64، بولین به bool، آرایه به Vec<T>، و شیء به یک استراکت نام‌گذاری‌شده با derive‌های serde. فیلدهای null یا غایب به Option<T> با #[serde(default)] تبدیل می‌شوند.
#[serde(rename)] چه زمانی اضافه می‌شود؟
هرگاه کلید JSON با نام فیلد snake_case آن برابر نباشد — برای مثال یک کلید userName فیلد user_name را با #[serde(rename = "userName")] تولید می‌کند، پس استراکت همچنان JSON اصلی را دقیقاً دیسریالایز می‌کند.
آیا می‌توانم عرض عدد صحیح را انتخاب کنم؟
بله. کلید تغییر عرض، اعداد صحیح ۶۴-بیتی (i64/u64) یا ۳۲-بیتی (i32/u32) تولید می‌کند. علامت‌دار بودن از داده پیروی می‌کند: نمونه‌های کاملاً نامنفی از نوع بدون‌علامت استفاده می‌کنند. مقادیر فراتر از محدوده ۳۲-بیتی به‌طور خودکار به ۶۴-بیتی ارتقا می‌یابند.
کدام derive‌ها گنجانده می‌شوند؟
پیش‌فرض #[derive(Serialize, Deserialize, Debug, Clone)] است؛ گزینه حداقلی فقط Serialize, Deserialize تولید می‌کند. استراکت‌های فرزند پیش از والدینی که به آن‌ها ارجاع می‌دهند اعلان می‌شوند تا ماژول همان‌طور که هست کامپایل شود.

ابزارهای بیشتر