تحويل JSON إلى فئة C#
الصق عيّنة JSON لتحصل على فئات C# POCO جاهزة للصقها في ملف .cs. تختار الأداة أنواعًا مناسبة، وتعالج الكائنات المتداخلة بتعريفات فئات إضافية، وتدعم أنواع المراجع القابلة للإبطال، وتُصدر سمات System.Text.Json أو Newtonsoft.Json حسب مشروعك.
كيفية تحويل JSON إلى C#
-
1
الصق بيانات JSON
عيّنة واحدة تكفي. أما استخدام عدة عيّنات فيحسّن استنتاج القابلية للإبطال وأنواع عناصر المصفوفات.
-
2
اختر النمط
System.Text.Json (.NET 6+) أو Newtonsoft.Json (القديم). أسماء الخصائص بنمط PascalCase مع السمة `[JsonPropertyName]` لبيانات JSON بنمط camelCase.
-
3
اختر إصدار C# المستهدف
استخدم C# 10+ للسجلات ومساحات الأسماء ذات نطاق الملف، وC# 8 لأنواع المراجع القابلة للإبطال، أو إصدارات أقدم لتحقيق أقصى قدر من التوافق.
-
4
انسخ الفئات
فئة جذرية واحدة بالإضافة إلى فئات متداخلة لكل شكل من أشكال الكائنات، وكلها في ملف واحد جاهز للإدراج مباشرة في مشروعك.
مثال على الناتج
للمدخل التالي:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
ناتج System.Text.Json (C# 10+):
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
تعيين الأنواع
| JSON | نوع C# |
|---|---|
| سلسلة نصية | string |
| عدد صحيح | int (أو long للقيم الأكبر من int.MaxValue) |
| رقم (عشري) | double (أو decimal عند الاختيار) |
| قيمة منطقية | bool |
| null | object? (أو مدموج مع الحقل المجاور) |
| تاريخ ISO-8601 | DateTime (أو DateOnly) |
| سلسلة بصيغة GUID | Guid |
| مصفوفة من السلاسل النصية | List<string> |
| كائن | فئة متداخلة |
خيارات السمات
- System.Text.Json (
[JsonPropertyName("foo")])، يُفضّل استخدامه في مشاريع .NET 6+ والمشاريع الجديدة. - Newtonsoft.Json (
[JsonProperty("foo")])، للمشاريع القديمة أو عندما تحتاج إلى ميزات خاصة بـ Newtonsoft. - بدون، تتطابق أسماء الخصائص تمامًا مع مفاتيح JSON (يعمل هذا الخيار فقط إذا كانت مفاتيح JSON بنمط PascalCase مسبقًا).
أخطاء شائعة
- استخدام
intلحقل قد يتجاوز الحد. إذا احتوت بيانات JSON على قيم تتجاوزint.MaxValue، فاستخدمlong. يرفع المولّد النوع تلقائيًا عندما يرصد قيمًا كبيرة. - إغفال
[JsonIgnore]للخصائص المحسوبة. إذا أضفت خصائص مساعِدة إلى الفئة المولَّدة، فزيّنها بالسمة[JsonIgnore]؛ وإلا فسيتم تسلسلها عند الإخراج. - نسيان التحليل المستقل عن الثقافة. ينبغي إلغاء تسلسل حقول
decimalباستخدامCultureInfo.InvariantCulture؛ يفعل System.Text.Json ذلك افتراضيًا، بينما يفعله Newtonsoft عبر الإعدادات العامة. - الوثوق بالمولّد اعتمادًا على عيّنة واحدة فقط. يُستنتج احتمال الإبطال وأنواع عناصر المصفوفة مما يراه المولّد. تحقّق دائمًا من صحة تعليقات القابلية للإبطال مقارنةً بالسلوك الفعلي لواجهة برمجة التطبيقات لديك.
الأسئلة الشائعة
للمشاريع الجديدة على .NET 6+، استخدم System.Text.Json؛ فهو أسرع، ومدمج في النظام، ويدعم الآن تقريبًا جميع ميزات Newtonsoft. أما Newtonsoft فاستخدمه للمشاريع القديمة أو عندما تحتاج إلى ميزاته الخاصة (مُحلِّلات العقود المخصصة، وJObject، والمعالجة الديناميكية).
السجلات (records) هي الخيار الاصطلاحي لنماذج DTO غير القابلة للتغيير في C# 10+، إذ توفّر تكافؤًا بالقيمة وصياغة موجزة. أما الفئات فأفضل عندما تحتاج إلى التعديل أو التوافق مع الأنظمة القديمة. وتتيح لك الأداة اختيار أيٍّ منهما.
إذا كان مشروعك يستخدم أنواع المراجع القابلة للإبطال (C# 8+)، فإن الحقول التي تظهر بقيمة null في أي عيّنة تصبح string? وint? وهكذا. وبدون أنواع المراجع القابلة للإبطال، تُبيَّن القابلية للإبطال لأنواع القيم فقط (مثل int?).
لا يمكن تمثيل المصفوفات المختلطة من أشكال كائنات مختلفة بشكل مباشر في C# ذي التنميط الصارم. تستنتج الأداة فئة أساس مشتركة أو (كخيار احتياطي) object؛ وفي حالة المصفوفات المختلطة يُستحسن عادةً إعادة تصميم بنية JSON.
أدوات ذات صلة
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
مرجع أحرف HTML
قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.
مرجع اختصارات لوحة المفاتيح
ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.
مدقق البريد الإلكتروني
تحقق من عنوان بريد إلكتروني: فحص صياغة RFC 5322، واستعلام حي عن سجل MX، بالإضافة إلى تفاصيل الجزء المحلي والنطاق والطول. لا يتم إرسال أي بريد.
مولد EditorConfig
أنشئ ملف .editorconfig بقواعد نمط المسافة البادئة وحجمها ونهاية السطر ومجموعة الأحرف والمسافات البيضاء، لتنسيق موحّد عبر بيئات التطوير المتكاملة (IDEs) والمحررات.
منسق HTML
نسّق HTML محلياً في المتصفح بمسافة بادئة من مسافتين أو أربع مسافات. لا يُرفع HTML ولا يُتحقق منه.
الأداة متاحة بلغات أخرى
- JSON vers classe C# [FR]
- JSON till C#-klass [SV]
- JSON ถึงคลาสใน C# [TH]
- JSON ke Kelas C# [ID]
- Từ JSON đến lớp C# [VI]
- JSON을 C# 클래스로 [KO]
- JSON zu C# Klasse [DE]
- JSON a Clase C# [ES]
- JSON naar C#-klasse [NL]
- JSON na klasę C# [PL]
- JSONからC#クラスへ [JA]
- JSON para Classe C# [PT]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]
- JSON to C# Class [EN]
- JSON in classe C# [IT]