Skip to content

محوّل JSON إلى بنية Rust

الصق JSON واحصل على بنى Rust اصطلاحية مع serde فوراً، 100% في متصفّحك. أنواع i64/u64/f64 صحيحة، وOption للقيم الفارغة، و#[serde(rename)] لمفاتيح camelCase. مجاني.

بدون تتبّع يعمل في المتصفّح مجاني
الخيارات
0 حرف
إخراج <bdi>Rust</bdi>
0 سطر
تم التحقق من الإخراج مقابل دلالات serde وتنسيق rustfmt لحمولات API واقعية. — Go Tools Team · Jul 2, 2026

ما هو تحويل JSON إلى Rust؟

يحوّل تحويل JSON إلى Rust عيّنة JSON إلى بنى Rust جاهزة للتصريف مع ماكرو #[derive(Serialize, Deserialize)] من serde، فلا تكتب يدوياً كوداً نمطياً لفكّ التسلسل لاستجابات API أو ملفات الإعداد. يستنتج مولّد بنى Rust السريع هذا أنواع الأرقام الصحيحة، ويعلّم الحقول الغائبة على أنها Option، ويضيف #[serde(rename)] للمفاتيح غير snake_case — كل ذلك 100% في متصفحك.

أمثلة

استجابة API

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
    pub id: i64,
    pub name: String,
    pub email: String,
    pub active: bool,
    pub roles: Vec<String>,
}

تتحوّل حمولة REST نموذجية إلى بنية جاهزة لـserde يمكنك إدراجها مباشرة في عميلك. تُستنتج الأرقام i64، وتصبح المصفوفات Vec<String>.

كائن متداخل

{"repo":"serde","owner":{"login":"dtolnay","id":100}}
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
    pub repo: String,
    pub owner: Owner,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
    pub login: String,
    pub id: i64,
}

تصبح الكائنات المتداخلة بنى منفصلة ومسماة (Owner) يُشار إليها حسب الحقل — وتُزال تكرارات الأشكال المتطابقة.

مصفوفة من الكائنات (حقل اختياري)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
    pub users: Vec<User>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
    pub id: i64,
    pub nick: Option<String>,
}

تُدمج مصفوفات الكائنات في بنية عنصر واحدة. المفاتيح الغائبة من بعض العناصر تصبح Option<String> — دون الحاجة إلى #[serde(default)].

مفاتيح camelCase

{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"}
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
    pub login: String,
    #[serde(rename = "publicRepos")]
    pub public_repos: i64,
    #[serde(rename = "followerCount")]
    pub follower_count: i64,
    #[serde(rename = "createdAt")]
    pub created_at: String,
}

تصبح الحقول snake_case مع #[serde(rename)] يعيد التعيين إلى مفتاح JSON الأصلي. المفاتيح التي هي snake_case أصلاً مثل login لا تحصل على إعادة تسمية.

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

  1. 1

    الصق بيانات JSON

    أدرِج كائن JSON أو مصفوفة أو استجابة API في حقل الإدخال. يبدأ التحويل فوراً.

  2. 2

    اضبط الإخراج

    أعد تسمية البنية الجذرية وبدّل مشتقات serde، وDebug وClone، أو رؤية pub لتطابق نمط الـcrate لديك.

  3. 3

    انسخ أو حمّل

    خذ Rust المُولَّد بنقرة واحدة والصقه مباشرة في مشروعك.

Common Use Cases

عملاء API مكتوبو الأنواع
حوّل عيّنة استجابة REST أو GraphQL إلى بنى serde لعميل reqwest أو مشابه دون كتابة كود فكّ التسلسل النمطي يدوياً.
تحليل الإعدادات والتجهيزات
ولّد بنى لملفات إعداد JSON أو تجهيزات الاختبار أو حمولات webhook التي تحتاج إلى فكّ تسلسلها بـserde_json.
النمذجة السريعة
الصق حمولة غير مألوفة لترى شكلها فوراً كأنواع Rust — طريقة سريعة لاستكشاف API جديد قبل ربطه.

كيف يعمل التحويل

الاستنتاج البنيوي
يصبح كل كائن بنية مسماة؛ وتُزال تكرارات الأشكال المتطابقة فتحصل على بنية واحدة لا نسخ. تُدمج مصفوفات الكائنات مفتاحاً بمفتاح، والمفاتيح الغائبة من بعض العناصر تصبح Option<T>.
كتابة أنواع الأرقام الصحيحة
تُعيَّن الأعداد الصحيحة إلى i64، وتترقّى إلى u64 بعد i64::MAX، وتعود إلى f64 بعد u64. تُكتشف الأعداد العشرية من الرمز (1.0، 2e3) فلا يفشل فكّ تسلسل serde أبداً بسبب عدم تطابق عدد عشري مع حقل صحيح.
معرّفات اصطلاحية قابلة للتصريف
تصبح المفاتيح حقول snake_case مع #[serde(rename)] يعود إلى المفتاح الأصلي؛ وتُنظَّف الكلمات المفتاحية في Rust والأسماء المكرّرة والمفاتيح غير المعرّفات فيُصرَّف الإخراج دائماً.
100% على جانب المتصفح
يجري التحليل والتوليد في متصفحك دون أي طلبات شبكة، فتبقى بياناتك خاصة.

نصائح لبنى Rust نظيفة

سمِّ بنيتك الجذرية
عيّن اسماً جذرياً ذا معنى (مثل User أو ApiResponse) بدلاً من الافتراضي Root لكود مقروء.
أضف serde_json عند الحاجة فقط
يظهر serde_json::Value مع المصفوفات الفارغة أو المختلطة الأنواع والحقول الفارغة فقط. أعطِ تلك الحقول نوعاً محدّداً من عيّنة أغنى إن استطعت، أو أضف serde_json إلى Cargo.toml.
راجع Option مقابل المطلوب
تُعلَّم الحقول Option<T> فقط عندما تحذفها عيّنة. الصق حمولة تمثيلية كي تستنتج الأداة الحقول المطلوبة والاختيارية بدقة.

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

كيف أحوّل JSON إلى بنية Rust؟
الصق بيانات JSON في حقل الإدخال. يحلّلها المحوّل فوراً في متصفحك ويولّد بنى Rust مع مشتقات serde على اليمين. انقر على «انسخ» لأخذ النتيجة — بلا رفع ولا حساب ولا انتظار.
هل يولّد مشتقات serde؟ وهل أحتاج إلى serde وserde_json؟
نعم — يستخدم الإخراج #[derive(Debug, Clone, Serialize, Deserialize)] افتراضياً. أضف serde مع ميزة derive إلى Cargo.toml. لا تحتاج إلى serde_json كاعتمادية إلا إذا احتوى الإخراج على serde_json::Value، الذي يظهر مع المصفوفات الفارغة أو المختلطة والحقول الفارغة فقط. أوقف مبدّل serde لإخراج بنى بسيطة.
كيف أستخدم البنية المُولَّدة لتحليل JSON؟
أضف serde_json إلى Cargo.toml، ثم فُكّ التسلسل في سطر واحد: let root: Root = serde_json::from_str(json)?;. يتكفّل مشتق Deserialize المُولَّد بالباقي — استخدم serde_json::from_slice لشريحة بايتات أو from_reader لملف أو جسم HTTP، وserde_json::to_string لإعادة التسلسل.
كيف تُعالَج الحقول الاختيارية والفارغة؟
عندما يظهر مفتاح في بعض عناصر المصفوفة دون غيرها، يصبح حقل Option. والحقل الذي يكون دائماً null فقط يصبح serde_json::Value اختيارياً. يعامل serde الـOption على أنه اختياري تلقائياً، فلا تُضاف سمة #[serde(default)] ولا تُطلب.
كيف يعالج مفاتيح camelCase والكلمات المفتاحية في Rust؟
تُحوَّل أسماء الحقول إلى snake_case اصطلاحية، وتعيد سمة #[serde(rename)] تعيينها إلى مفتاح JSON بالضبط. الكلمات المحجوزة مثل type أو match تُخرَج كـtype_ أو match_ مع إعادة تسمية، وهو أمتن من المعرّفات الخام لأنه يغطي أيضاً self وcrate وsuper.
هل يمكنه استخدام #[serde(rename_all)] بدل إعادة التسمية لكل حقل؟
تُخرِج الأداة #[serde(rename)] لكل حقل لأنه يعمل دائماً — حتى عندما تخلط حمولة واحدة بين camelCase وsnake_case والمفاتيح غير المنتظمة. إذا كانت كل الحقول في بنية تشترك في اتفاقية واحدة، فاحذف تلك السمات وضع #[serde(rename_all = "camelCase")] واحدة على البنية بدلاً منها؛ وكلاهما يفكّ التسلسل بشكل متطابق.
أي نوع رقمي في Rust يستخدم؟
تُعيَّن الأعداد الصحيحة إلى i64، أو u64 عندما تتجاوز القيمة i64::MAX، وتعود إلى f64 بعد u64 — فتبقى المعرّفات الكبيرة سليمة ذهاباً وإياباً. وأي رقم مكتوب بفاصلة عشرية أو أُس (مثل 1.0 أو 2e3) يُعيَّن إلى f64، لأن serde يرفض إدخال عدد عشري في حقل صحيح.
كيف تُكتب أنواع التواريخ والطوابع الزمنية؟
لا يملك JSON نوع تاريخ، لذا تخرج سلاسل ISO مثل 2011-01-25 أو طوابع RFC 3339 الزمنية على أنها String. للتعامل الحقيقي مع التواريخ، غيّر الحقل إلى نوع chronoDateTime في المنطقة الزمنية Utc، أو NaiveDate — وفعّل ميزة serde في chrono. عندئذٍ يحلّل serde صيغة RFC 3339 تلقائياً.
كيف أتعامل مع الكائنات ذات المفاتيح الديناميكية أو غير المعروفة؟
عندما تتغيّر المفاتيح — مثلاً خريطة من المعرّفات إلى القيم — استبدل البنية المُولَّدة بـHashMap مفتاحها String. وللاحتفاظ ببنية مكتوبة الأنواع مع التقاط الحقول الإضافية، أضف حقل #[serde(flatten)] من نوع HashMap. وللقيم الديناميكية بالكامل، يكون serde_json::Value النوع الجامع.
هل بيانات JSON الخاصة بي خاصة وآمنة؟
نعم. يجري التحويل 100% في متصفحك باستخدام JavaScript. بيانات JSON الخاصة بك — بما في ذلك الرموز أو المعرّفات أو بيانات العملاء — لا تغادر الصفحة أبداً ولا تُرسَل إلى أي خادم.
هل يمكنني توليد بنى Rust بسيطة دون serde؟
نعم. أوقف مبدّل serde لإسقاط سطر use serde ومشتقَّي Serialize وDeserialize وكل سمات #[serde(rename)] — فتبقى بنى نظيفة. ويمكنك أيضاً تبديل مشتقات Debug وClone ورؤية pub.
هل الأداة مجانية؟ وهل أحتاج إلى حساب؟
إنها مجانية تماماً بلا تسجيل ولا حدود ولا إعلانات تزحم مساحة العمل.

أدوات ذات صلة

عرض جميع الأدوات →

محوّل Base64 — ترميز وفك ترميز أونلاين

الترميز والتنسيق

رمّز وفك ترميز Base64 مجاناً أونلاين — محوّل فوري مع دعم UTF-8 والرموز التعبيرية. خصوصية 100% — يعمل في متصفّحك. جرّبه الآن.

محوّل Base64 إلى صورة أونلاين

الترميز والتنسيق

فك ترميز سلسلة Base64 أو عنوان URI للبيانات إلى صورة داخل متصفّحك. عاين واقرأ الأبعاد ونوع MIME ثم نزّل كـ PNG أو JPG أو GIF أو SVG. بلا رفع.

محوّل CSV إلى JSON

الترميز والتنسيق

حوّل CSV إلى JSON في متصفحك. RFC 4180، استنتاج الأنواع، صف العنوان، أمان الأعداد الكبيرة. خصوصية 100%.

محوّل .env إلى JSON

الترميز والتنسيق

الصق ملف .env واحصل على JSON فورًا. كلمات مرور قاعدة بياناتك ومفاتيح API لا تغادر متصفحك أبدًا — خاص 100٪، بلا رفع، محلّل dotenv مجاني.

فكّ كيانات HTML المجانية — فكّ تهريب الرموز

الترميز والتنسيق

فُكّ كيانات HTML وفُكّ تهريب HTML أونلاين — مجانًا، بلا تسجيل، 100% داخل متصفحك. يحوّل المراجع بالاسم والعشرية والسداسية إلى أحرف؛ لا يُرفع أبدًا.

ترميز كيانات HTML المجانية — تهريب الرموز

الترميز والتنسيق

رمّز كيانات HTML وهرّب الأحرف الخاصة (< > & " ') أونلاين — مجانًا، بلا تسجيل، 100% داخل متصفحك. خرج بالاسم أو العشري أو السداسي عشري؛ لا يُرفع أبدًا.