UTILS.
‎100%‎ داخل المتصفح
🦀

من JSON إلى بُنى Rust Serde

أنشئ بُنى Rust مع مُشتقّات serde من عيّنة JSON، جاهزة لـ Serialize/Deserialize، مع Option للحقول القابلة لأن تكون null وسمات rename.

المخرج

حول هذه الأداة

تحوّل أداة من JSON إلى بُنى Rust Serde عيّنة JSON ملصوقة إلى بُنى Rust مُعلَّقة لـ serde، بحيث يمكنك إلغاء تسلسل الحمولة نفسها دون كتابة كل حقل يدويًا. تحلّل JSON، وتستنتج أنواع Rust بشكل تكراري، وتصدر بنية #[derive(Serialize, Deserialize, ...)] لكل كائن: تصبح السلاسل String، والأعداد الصحيحة i64 (أو u64 عندما تكون كل العيّنات غير سالبة)، والأرقام الأخرى f64، والقيم المنطقية bool، والمصفوفات Vec<T>، والكائنات المتداخلة بُنى PascalCase خاصة بها تُعرَّف قبل آبائها.

كل العمل يحدث محليًا في متصفحك باستخدام JSON.parse وجافاسكريبت عادية — لا يُرفَع شيء. تُحوَّل حقول البنية إلى snake_case، وكلما اختلف مفتاح JSON عن حقل snake_case تضيف الأداة #[serde(rename = "originalKey")] كي تظل البنية مطابقة لصيغة السلك. المفاتيح الغائبة في بعض العيّنات الشقيقة، أو التي تُرى كـ null، تصبح Option<T> مع #[serde(default)] كي يتحمّل إلغاء التسلسل غيابها. المصفوفات الفارغة تعود إلى Vec<serde_json::Value>.

يبدّل مفتاح عرض العدد الصحيح بين أعداد 64-بت (i64/u64، الافتراضي) و32-بت (i32/u32)، ويرتقي إلى 64-بت تلقائيًا عندما تتجاوز قيمة معاينة نطاق 32-بت. يختار مفتاح المُشتقّات بين المجموعة الكاملة (Serialize, Deserialize, Debug, Clone) وبين Serialize, Deserialize الأدنى. يبدأ الملف بـ use serde::{Serialize, Deserialize};. انسخه أو نزّل ملف .rs.

الأسئلة الشائعة

كيف تُطابَق أنواع JSON مع Rust؟
string إلى String، وعدد صحيح إلى i64 (أو u64 عندما تكون كل عيّنة غير سالبة)، ورقم غير صحيح إلى f64، وقيمة منطقية إلى bool، ومصفوفة إلى Vec<T>، وكائن إلى بنية مسمّاة مع مُشتقّات serde. الحقول null أو الغائبة تصبح Option<T> مع #[serde(default)].
متى تُضاف #[serde(rename)]؟
كلما لم يساوِ مفتاح JSON اسم حقل snake_case الخاص به — مثلًا مفتاح userName يُنتِج حقل user_name مع #[serde(rename = "userName")]، فتظل البنية تُلغي تسلسل JSON الأصلي تمامًا.
هل يمكنني اختيار عرض العدد الصحيح؟
نعم. يُصدِر مفتاح العرض أعدادًا صحيحة 64-بت (i64/u64) أو 32-بت (i32/u32). تتبع الإشارة البيانات: العيّنات غير السالبة كليًا تستخدم النوع غير المُوقَّع. القيم التي تتجاوز نطاق 32-بت تُرقّى إلى 64-بت تلقائيًا.
أي مُشتقّات تُضمَّن؟
الافتراضي هو #[derive(Serialize, Deserialize, Debug, Clone)]؛ الخيار الأدنى يُصدِر Serialize, Deserialize فقط. تُصرَّح البُنى الأبناء قبل الآباء الذين يشيرون إليها كي تُصرَّف الوحدة كما هي.

المزيد من الأدوات