JSON إلى أصناف C#
ولّد أصناف C# من JSON بخصائص PascalCase وسمات [JsonPropertyName] وأنواع مراجع قابلة لـ null ومجموعات List<T>. مجاني وخاص.
يستخدم سمات System.Text.Json وأنواع المراجع القابلة لـ null (string? وlong?).
يعمل بالكامل في متصفحك. لا يتم رفع بياناتك أبدًا.
أدوات ذات صلة
عرض الكلما هو JSON إلى C#؟
حوّل عيّنة JSON إلى أصناف C# لـ System.Text.Json. كل خاصية بنمط PascalCase وتحمل سمة [JsonPropertyName("…")] بالمفتاح الأصلي وتستخدم أنواعًا قابلة لـ null حيث تحوي العيّنة قيم null أو قيمًا غائبة.
كيفية استخدام JSON إلى C#
- الصق عيّنة JSON في إدخال JSON (أو انقر تحميل مثال / فتح ملف).
- اضبط اسم النوع الجذر (الافتراضي
Root). - انسخ شيفرة C# الناتجة أو تنزيل كملف.
مثال
{"id":1,"name":"A","tags":["x"]} using System.Collections.Generic;
using System.Text.Json.Serialization;
public class Root
{
[JsonPropertyName("id")]
public long Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
[JsonPropertyName("tags")]
public List<string> Tags { get; set; } = new();
} متى تستخدم JSON إلى C#
استخدمه لعملاء HTTP في .NET ونماذج ASP.NET وبيانات الاختبار. ومع Newtonsoft.Json استبدل السمة بـ [JsonProperty]؛ وللقيم المالية فكّر في تغيير double إلى decimal.
كيف يعمل JSON إلى C#
تُجتاز العيّنة تكراريًا ويجمع كل موضع الأنواع التي رآها. تُدمج مصفوفات الكائنات في نوع واحد: فالمفتاح الغائب من بعض العناصر يصبح اختياريًا، والمفتاح الذي يكون null في موضع ما يصبح قابلًا لـ null، والأعداد الصحيحة المختلطة بكسرية تصبح نوع الفاصلة العائمة، وأي خلط آخر للأنواع يعود إلى نوع ديناميكي. وتصبح الكائنات المتداخلة أنواعًا مسماة (PascalCase للمفتاح مع إفراد مفاتيح المصفوفات: orders ← Order) مع لواحق رقمية عند تعارض الأسماء. يقابل ناتج C# الأعداد الصحيحة بـ long والكسرية بـ double والنصوص بـ string والمنطقية بـ bool والمصفوفات بـ List<T> والكائنات المتداخلة بأصنافها الخاصة والقيم الديناميكية بـ object?. وتحصل القيم القابلة لـ null أو الاختيارية على ?؛ وتُهيَّأ النصوص غير القابلة لـ null بـ string.Empty والقوائم أو الكائنات بـ new()، فتُصرَّف الشيفرة دون تحذيرات عند تفعيل أنواع المراجع القابلة لـ null.
حالات الاستخدام الشائعة
- فك استجابة API بواسطة HttpClient وSystem.Text.Json
- إنشاء نماذج الطلب/الاستجابة لمتحكم ASP.NET
- نمذجة أقسام إعداد JSON
- توليد أصناف لمشغّلات Azure Function
الأسئلة الشائعة
لماذا تحمل كل خاصية سمة؟
تحافظ السمة على مفتاح JSON الدقيق حتى لو اختلف اسم C#، فيعود التسلسل كما كان بصرف النظر عن سياسة التسمية.
لماذا double بدل decimal؟
لا يملك JSON نوع decimal؛ ويطابق double ما ينتجه المحلل. استخدم decimal للقيم المالية.
هل يعمل مع Newtonsoft.Json؟
نعم بعد استبدال [JsonPropertyName] بـ [JsonProperty] وتعليمة using.