Omnikit
المطورونالملفاتالمالجميع الأدوات
Ctrl K
أدوات المطورينأدوات الملفاتالحاسبات الماليةجميع الأدوات
الرئيسيةأدوات المطورينمحوّل JSON إلى بُنى Rust
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский

محوّل JSON إلى بُنى Rust

مطورون

حوّل عينة JSON إلى بُنى Rust مع اشتقاقات serde وإعادة التسمية وOption وVec

يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان. تم التحقق في 16 أكتوبر 2026.

الصق عينة JSON واحصل على بُنى (structs) في Rust مع اشتقاقات Serialize وDeserialize من serde. تصبح الأعداد الصحيحة i64 وأي كسر عشري يجعل الحقل f64؛ والقيمة null أو المفقودة من بعض الكائنات تصبح Option<T>، والمفاتيح المكتوبة بشكل مختلف عن حقلها بصيغة snake_case تحصل على rename من serde، وعلى rename_all واحد عندما تكون كلها camelCase.

تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي

التالي:
  • تحويل JSON إلى TypeScript أنشئ واجهات أو أنواع TypeScript من عيّنة JSON
  • منسّق JSON ومدقّقه نسّق JSON وتحقق منه وصغّره ورتّبه مع الموضع الدقيق لكل خطأ

كيفية تحويل JSON إلى بنية Rust

1

الصق عينة JSON، مثل استجابة API، في المربع الأيسر.

2

تظهر بُنى Rust أثناء الكتابة، كل منها مع #[derive(Serialize, Deserialize)] وحقول بصيغة snake_case وإعادات التسمية التي تحتاجها من serde.

3

فعّل Option لكل حقل أو PartialEq إن أردتهما، وحدد اسم البنية الجذر.

4

اضغط نسخ، أو تنزيل لحفظ models.rs، وأضف serde (مع الميزة derive) وserde_json إلى Cargo.toml.

حول محوّل JSON إلى بُنى Rust

تفك Rust ترميز JSON باستخدام serde، ويحتاج كل كائن إلى بنية تحمل حقولها الأنواع الصحيحة وتقابل أسماؤها مفاتيح JSON. يكتب هذا المحوّل تلك البُنى من عينة، فتتحول استجابة API طويلة إلى Rust قابل للترجمة بلصقة واحدة.

كيف تُختار الأنواع.

قيمة JSON نوع Rust
"text" String
true / false bool
42 (أعداد صحيحة فقط) i64
4.5 (ظهر أي كسر عشري) f64
null، ومعها نوع آخر Option
null فقط، أو أنواع مختلطة serde_json::Value
[ ... ] Vec<...>
{ } فارغ Map<String, Value>
{ ... } بنية مستقلة

المفاتيح المفقودة. تُدمج كل كائنات المصفوفة في بنية واحدة. والمفتاح الذي يُسقطه بعضها يصبح Option، لأن serde يعامل Option المفقود على أنه None وأي حقل مفقود آخر على أنه خطأ. وتحصل هذه الحقول أيضًا على skip_serializing_if، فعند كتابة البنية مجددًا تُحذف مرة أخرى.

الأسماء. تُكتب الحقول بصيغة snake_case. وعندما يكون كل مفتاح مجرد صيغة camelCase لحقله، تحمل البنية rename_all واحدًا؛ وإلا يحصل كل حقل مختلف على rename خاص به. وتصبح الكلمات المحجوزة معرّفات خام مثل r#type؛ ولا يمكن أن تكون self وsuper وcrate خامًا، فتصبح self_ مع rename.

الخيارات. يناسب Option لكل حقل واجهات API التي قد تُسقط أي مفتاح. واشتقاق PartialEq يتيح للاختبارات مقارنة القيم. اسم البنية الجذر Root ما لم تسمّها.

فُحص كل ناتج بقراءة Rust مرة أخرى وفق قواعد serde وفك ترميز 9 عينات به. لا شيء مما تلصقه يغادر المتصفح.

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

كيف أحول JSON إلى بنية Rust؟

الصق عينة JSON في المحوّل فتظهر بُنى Rust بجانبها، كل منها يشتق Serialize وDeserialize. أضف serde مع الميزة derive وserde_json إلى Cargo.toml، والصق البُنى في وحدة، وفك الترميز باستخدام serde_json::from_str::<Root>(&text).

متى يصبح الحقل Option<T>؟

يصبح الحقل Option عندما تُظهره العينة بقيمة null، أو عندما تُسقط بعض كائنات المصفوفة المفتاح. يفك serde ترميز المفتاح المفقود في Option إلى None، بينما يُعد أي حقل مفقود آخر خطأً، لذا فإن Option هو ما يتيح للبنية قبول كل كائن في العينة.

كيف تُطابَق مفاتيح JSON بصيغة camelCase مع حقول snake_case؟

تُكتب الحقول بصيغة snake_case كما يطلب أسلوب Rust. وعندما يكون كل مفتاح صيغة camelCase لحقله، تحصل البنية على #[serde(rename_all = "camelCase")] واحد؛ وإلا يحصل كل حقل مكتوب بشكل مختلف على #[serde(rename = "key")] خاص به، فتُفك ترميز مفاتيح مثل first-name أو 2fa أيضًا.

لماذا i64 وf64 بدل i32 أو f32؟

لا يحدد JSON مدى كِبَر الرقم، لذا فإن i64 هو النوع الصحيح الآمن، وf64 يوافق الدقة المضاعفة التي تُقرأ بها أرقام JSON. ويصبح الحقل f64 بمجرد أن تحمل أي قيمة في العينة جزءًا عشريًا، لأن serde يرفض قراءة 4.5 في عدد صحيح.

ماذا يحدث لمفتاح اسمه type أو match؟

تُكتب الكلمات المحجوزة معرّفات خامًا، مثل r#type، ويزيل serde البادئة r# عند مطابقتها بالمفتاح، فلا حاجة إلى rename. والكلمات المحجوزة الأربع التي لا يمكن أن تكون خامًا، وهي self وSelf وsuper وcrate، تصبح self_ وما شابهها، مع rename يعيدها إلى المفتاح الأصلي.

هل يُرفع ملف JSON الخاص بي؟

لا. يجري التحويل في متصفحك دون أي طلب إلى خادم، ولا يُحفظ JSON، فتبقى استجابات API التي تحمل رموز وصول أو بيانات شخصية على جهازك. أغلق التبويب ولن يبقى شيء.

المصادر

  • serde, field attributesrename and skip_serializing_if on a field
  • serde, container attributesrename_all = "camelCase" on a struct
  • The Rust Reference, keywords and raw identifiersWhich names need r#, and the four that cannot be raw
  • Rust API Guidelines, namingUpperCamelCase types, snake_case fields

آخر تحقق في 16 أكتوبر 2026.

تتغير المعدلات والقواعد؛ راجع المصدر قبل الاعتماد على أي رقم.

هل ما زلت عالقًا؟ اسأل عن محوّل JSON إلى بُنى Rust ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.

أدوات ذات صلة

جميع أدوات المطورين
ترميز Base64 وفك ترميزهالنصوص والملفات إلى Base64 والعكس، مع وضع آمن لعناوين URL ومعاينة للصورمحوّل الطابع الزمني Unixمن الطوابع الزمنية Unix إلى تواريخ ومن التواريخ إلى طوابع زمنية، بأي منطقة زمنيةتحويل JSON إلى TypeScriptأنشئ واجهات أو أنواع TypeScript من عيّنة JSONتحويل CSV إلى JSONحوّل CSV إلى JSON وJSON إلى CSV، مع معاينة جدولتحويل YAML إلى JSONحوّل YAML إلى JSON وJSON إلى YAML، مع حلّ المراسيترميز عناوين URL وفك ترميزهارمّز النصوص وعناوين URL بالترميز المئوي أو فكّها، واعرض كل جزء من الرابطمحوّل أنظمة الأعدادالثنائي والثماني والعشري والست عشري وأي أساس حتى 36، بدقة تامة مهما كان الحجم، مع المتمم الثنائيColor ConverterHEX, RGB, HSL, HWB, OKLCH and CMYK in both directions, with a contrast check
هل كانت هذه الأداة مفيدة؟
Omnikit

مهام صغيرة تُنجز في متصفحك. مجانية وسريعة وخاصة. لا تُرفع الملفات أبدًا.

الملفات

  • Compress Image
  • Image to PDF
  • Merge PDF
  • Compress PDF
  • PDF to Word
  • Word to PDF

المطورون

  • JSON Formatter & Validator
  • Base64 Encode & Decode
  • JWT Decoder, Verifier & Encoder
  • Password Generator
  • UUID Generator
  • Unix Timestamp Converter

المال

  • SIP Calculator
  • EMI Calculator
  • GST Calculator
  • FD Calculator
  • PPF Calculator
  • Lumpsum Calculator
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский
الأدلةالأسئلةمن نحنكيف نتحققمكتبة القوانين (تجريبية)الخصوصيةالشروطالإفصاحاتصل بناMore: Exam practice (UGC NET Paper 1)يعمل في متصفحك. لا يُرفع أي شيء. © 2026 Omnikit (theomnikit.com)