حوّل عينة JSON إلى أصناف أو سجلات C# لـ System.Text.Json أو Newtonsoft.Json
يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان. تم التحقق في 16 أكتوبر 2026.الصق عينة JSON واحصل على أصناف أو سجلات (records) في C# بخصائص بصيغة PascalCase ومفتاح JSON في سمة JsonPropertyName أو JsonProperty. تصبح الأعداد الصحيحة int، وlong بعد 2,147,483,647، وأي كسر عشري يجعل الحقل double، والقيمة null أو المفقودة تصبح قابلة للقيمة الفارغة، مثل int?.
تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي
الصق عينة JSON، مثل استجابة API، في المربع الأيسر.
تظهر أصناف C# أثناء الكتابة، صنف لكل كائن، بخصائص بصيغة PascalCase ومفتاح JSON في سمة على كل منها.
اختر System.Text.Json أو Newtonsoft.Json، والسجلات مع init إن كنت تفضل النماذج غير القابلة للتغيير.
اضغط نسخ، أو تنزيل لحفظ Models.cs، ثم ألغِ التسلسل إلى الصنف الجذر.
تقرأ C# ملفات JSON إلى أصناف مُنمَّطة، وتحتاج كل خاصية إلى النوع الصحيح وإلى طريقة للعثور على مفتاحها. يكتب هذا المحوّل تلك الأصناف من عينة، فتتحول استجابة API طويلة إلى نموذج قابل للترجمة بلصقة واحدة.
كيف تُختار الأنواع.
| قيمة JSON | نوع C# |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (أعداد صحيحة فقط) | int، أو long بعد 32 بت |
| 4.5 (ظهر أي كسر عشري) | double |
| null، ومعها نوع آخر | int?، string? |
| null فقط، أو أنواع مختلطة | object? |
| [ ... ] | List<...> |
| { } فارغ | Dictionary<string, object> |
| { ... } | صنف مستقل |
المفاتيح والأسماء. تُكتب الخصائص بصيغة PascalCase، فيصبح user_name بصيغة UserName وavatar_url بصيغة AvatarUrl. تحمل كل خاصية مفتاحها الأصلي في سمة، لأن System.Text.Json يطابق الأسماء مع مراعاة حالة الأحرف ما لم يُطلب منه غير ذلك؛ ويحصل Newtonsoft على [JsonProperty] بدلًا منها. والخاصية التي ستحمل اسم صنفها، وهو ما يرفضه المترجم بالخطأ CS0542، تُضاف إليها Value.
مصفوفات الكائنات. تُدمج كل كائنات المصفوفة في صنف واحد، فيبقى المفتاح الذي يظهر في بعضها فقط موجودًا، ويُجعل قابلًا للقيمة الفارغة كي يُقرأ غيابه null لا 0 أو false. يتشارك كائنان لهما المفاتيح والأنواع نفسها تمامًا صنفًا واحدًا.
الخيارات. تعطي السجلات مع init نماذج غير قابلة للتغيير تُقارن بالقيمة. اسم الصنف الجذر Root ما لم تسمّه. وعندما يكون JSON نفسه مصفوفة أو قيمة مفردة، يذكر تعليق النوع الذي يُلغى التسلسل إليه، مثل List.
فُحص كل ناتج بقراءة C# مرة أخرى ومطابقة 9 عينات معه وفق قواعد أدوات التسلسل. لا شيء مما تلصقه يغادر المتصفح.
الصق عينة JSON في المحوّل فتظهر أصناف C# بجانبها، صنف لكل كائن، مع سمة JsonPropertyName على كل خاصية. انسخها إلى مشروعك واقرأ JSON باستخدام JsonSerializer.Deserialize<Root>(json)، أو JsonConvert.DeserializeObject<Root>(json) عند اختيار Newtonsoft.
يطابق System.Text.Json أسماء الخصائص افتراضيًا مع مراعاة حالة الأحرف، فالخاصية المسماة UserName لن تتلقى المفتاح user_name أبدًا. تذكر السمة المفتاح الدقيق، فتبقى تسمية C# بصيغة PascalCase ويُقرأ JSON مع ذلك دون أي خيارات لأداة التسلسل أو سياسة تسمية.
تكون الخاصية قابلة للقيمة الفارغة عندما تُظهر العينة null لها، أو عندما تُسقط بعض كائنات المصفوفة مفتاحها. دون علامة الاستفهام، سيُقرأ الرقم المفقود بصمت على أنه 0 والعلامة المفقودة على أنها false، لذا يفصل النوع القابل للقيمة الفارغة بين الغياب والصفر.
تناسب السجلات ذات المُوصِّلات init النماذج التي تقرؤها فقط، لأن خصائصها لا تتغير بعد إلغاء التسلسل ويتساوى سجلان لهما القيم نفسها. وتناسب الأصناف ذات set النماذج التي تملؤها أو تعدّلها. يعمل كلاهما مع System.Text.Json منذ .NET 5 ومع Newtonsoft.Json.
تصبح الأعداد الصحيحة int، أو long عندما تتجاوز قيمة ما 2,147,483,647، ويصبح الحقل double بمجرد أن تحمل أي قيمة في العينة جزءًا عشريًا. والقيم من أنواع مختلفة، مثل رقم في عنصر ونص في آخر، تصبح object?، الذي يحتفظ بقيمة JSON الخام.
لا. يجري التحويل في متصفحك دون أي طلب إلى خادم، ولا يُحفظ JSON، فتبقى استجابات API التي تحمل رموز وصول أو بيانات شخصية على جهازك. أغلق التبويب ولن يبقى شيء.
تتغير المعدلات والقواعد؛ راجع المصدر قبل الاعتماد على أي رقم.
هل ما زلت عالقًا؟ اسأل عن محوّل JSON إلى أصناف C# ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.