تحويل 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.
أدوات ذات صلة
مولّد إعدادات Webpack
أنشئ ملف webpack.config.js لـ webpack 5 لمشاريع JavaScript الخالصة أو React أو Vue: مع TypeScript وBabel وCSS أو Sass والصور وHtmlWebpackPlugin وخادم التطوير وسطر npm install.
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
محوّل ترميز ملفات النصوص
حوّل النص بين UTF-8 وUTF-16 وLatin-1 وWindows-1252 وترميزات أخرى لإصلاح الأحرف المشوّهة.
مولّد ملف .gitignore
اجمع قواعد استبعاد المشروع لـ Laravel وNode.js وPython وRails. انسخ الناتج أو نزّل ملف ZIP يحتوي على .gitignore، مع إبقاء القواعد الشخصية منفصلة.
مُحقق تنسيق XSD
قم بالتحقق من وثيقة XML وفقًا لمخطط XSD، وعرض أي اختلافات بين العناصر وأنواعها مع تحديد أرقام السطور بدقة.
مولد ملف tsconfig.json
أنشئ ملف tsconfig.json نظيفا باختيار target وmodule وmoduleResolution وJSX وأعلام الصرامة الشائعة، ثم انسخ الإعداد المولّد إلى مشروعك.
الأداة متاحة بلغات أخرى
- JSON ke Kelas C# [ID]
- JSON vers classe C# [FR]
- JSON a Clase C# [ES]
- JSON para Classe C# [PT]
- JSON ถึงคลาสใน C# [TH]
- Từ JSON đến lớp C# [VI]
- JSON을 C# 클래스로 [KO]
- JSONからC#クラスへ [JA]
- JSON naar C#-klasse [NL]
- JSON till C#-klass [SV]
- JSON zu C# Klasse [DE]
- JSON na klasę C# [PL]
- JSON to C# Class [EN]
- JSON in classe C# [IT]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]