مطور / الأنواع
محوّل JSON إلى هياكل Rust
حوّل عينة JSON إلى هياكل Rust تشتق Serialize وDeserialize من serde، مع حقول snake_case، وإعادة تسمية، وOption للمفاتيح المفقودة أو ذات القيمة null، وVec للمصفوفات.
محوّل JSON إلى هياكل Rust: يتحوّل كل كائن إلى struct ذي حقول عامة. وتتحول المفاتيح إلى snake_case، مع #[serde(rename = "…")] عندما تختلف تهجئة JSON، بينما تتحول كلمات Rust المحجوزة مثل type إلى معرّفات خام (r#type)، ويعيد serde ربطها تلقائيًا. وتصبح المفاتيح المفقودة أو ذات القيمة null في بعض السجلات من النوع Option<T>، بينما تصبح القيم التي لا نوع واضحًا لها serde_json::Value. جرى تجميع المخرجات الخاصة بعدة عينات، وإلغاء تسلسل عينتها باستخدام serde 1. يعمل 100% محليًا في المتصفح، من دون رفع أي ملفات إلى الخادم.
- الفئة
- أدوات المطورين
- مرات التشغيل
- في المتصفح
- التكلفة
- مجاني · بلا تسجيل
- التوفر
- جاهز للاستخدام
تعمل بالكامل في المتصفح
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) وserde_json. تصبح أسماء الحقول بصيغة snake_case مع استخدام #[serde(rename)] عندما يختلف المفتاح؛ وتصبح المفاتيح الغائبة أو التي تكون null في بعض الكائنات من النوع Option. تكون الأعداد من النوع i64 ما لم تتضمن عينة كسرًا.
قراءة البيانات وكتابتها
أزل التسلسل باستخدام serde_json::from_str::<Root>(&text)?، وأجرِ التسلسل باستخدام serde_json::to_string(&value)?. تُتجاهل المفاتيح غير المعروفة في الإدخال افتراضيًا؛ أضف #[serde(deny_unknown_fields)] إلى البنية لرفضها.
للاطلاع على العينة نفسها في Go، راجع JSON إلى Go؛ ولترتيب العينة أولًا، استخدم منسّق JSON.
الخيارات والمفاتيح المفقودة
تتحول كل من قيمة مفتاح مفقود وقيمة null إلى None عند إلغاء تسلسل حقل Option. إذا احتجت إلى التمييز بينهما، فاستخدم Option<Option<T>> مع حزمة serde_with، أو احتفظ بـ serde_json::Value لهذا الحقل.
طريقة الاستخدام
- ألصق عينة JSON، ويفضل أن تكون مصفوفة تضم عدة سجلات نموذجية.
- سمِّ النوع الأعلى، واختر ما إذا كانت حقول None تُستبعد عند إجراء التسلسل.
- انسخ الهياكل إلى crate، الذي يحتاج إلى serde وserde_json.
الخصوصية والقيود
تُحوَّل JSON في المتصفح ولا تُرفع مطلقًا.
أدوات ذات صلة
الأسئلة الشائعة
ما الحزم التي أحتاج إليها؟
حزمة serde مع تفعيل الميزة derive، وحزمة serde_json: serde = { version = "1", features = ["derive"] } وserde_json = "1" في Cargo.toml.
لماذا i64 وf64؟
تستوعبان أي رقم JSON بأمان. حوّلهما إلى u32 أو u8 أو f32 عندما تعرف النطاق.
هل يمكنني استخدام #[serde(rename_all)] بدلًا من ذلك؟
نعم، إذا كانت كل المفاتيح تستخدم الاصطلاح نفسه، مثل camelCase، فإن وضع #[serde(rename_all = "camelCase")] واحد على struct يغني عن عمليات إعادة التسمية الفردية.
أداة مجانية · عدد مرات الاستخدام في المتصفح · لا يتطلب حسابًا