تحويل JSON إلى C# class
تكتب الأداة صنفا لكل كائن جاهزا للاستخدام مع JsonSerializer.Deserialize في .NET.
جارٍ تحميل الأداة…
المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.
طريقة الاستخدام
- أدخل نص JSON واسم النوع الرئيسي.
- تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
- انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.
طريقة الحساب
string وint أو long وdouble وbool وList<T> وobject?، وصنف public لكل كائن. كل خاصية بصيغة PascalCase مع [JsonPropertyName] بالمفتاح الأصلي. القيمة null أو الغياب تجعل النوع nullable مثل int? وstring?، والنصوص والقوائم الإلزامية تبدأ بقيمة فارغة.
مثال
المدخلات: اسم النوع الرئيسي = Root. النتيجة: الكود الناتج: #nullable enable using System.Collections.Generic; using System.Text.Json.Serialization; public class Root { [JsonPropertyName("id")] public int Id { get; set; } [JsonPropertyName("name")] public string Name { get; set; } = ""; [JsonPropertyName("email")] public string Email { get; set; } = ""; [JsonPropertyName("is_active")] public bool IsActive { get; set; } [JsonPropertyName("balance")] public double Balance { get; set; } [JsonPropertyName("tags")] public List<string> Tags { get; set; } = new(); [JsonPropertyName("address")] public Address Address { get; set; } = new(); [JsonPropertyName("orders")] public List<Order> Orders { get; set; } = new(); } public class Address { [JsonPropertyName("city")] public string City { get; set; } = ""; [JsonPropertyName("postal_code")] public string PostalCode { get; set; } = ""; } public class Order { [JsonPropertyName("order_id")] public string OrderId { get; set; } = ""; [JsonPropertyName("total")] public double Total { get; set; } [JsonPropertyName("coupon")] public string? Coupon { get; set; } }، عدد الأنواع: 3، عدد الحقول: 13.
{
"id": 1024,
"name": "Sara Ahmed",
"email": "sara@example.com",
"is_active": true,
"balance": 1520.75,
"tags": ["vip", "riyadh"],
"address": { "city": "Riyadh", "postal_code": "12211" },
"orders": [
{ "order_id": "A-1", "total": 99.5, "coupon": "EID10" },
{ "order_id": "A-2", "total": 120, "coupon": null }
]
}#nullable enable
using System.Collections.Generic;
using System.Text.Json.Serialization;
public class Root
{
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; } = "";
[JsonPropertyName("email")]
public string Email { get; set; } = "";
[JsonPropertyName("is_active")]
public bool IsActive { get; set; }
[JsonPropertyName("balance")]
public double Balance { get; set; }
[JsonPropertyName("tags")]
public List<string> Tags { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = new();
[JsonPropertyName("orders")]
public List<Order> Orders { get; set; } = new();
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = "";
[JsonPropertyName("postal_code")]
public string PostalCode { get; set; } = "";
}
public class Order
{
[JsonPropertyName("order_id")]
public string OrderId { get; set; } = "";
[JsonPropertyName("total")]
public double Total { get; set; }
[JsonPropertyName("coupon")]
public string? Coupon { get; set; }
}الحدود والملاحظات
- يستخدم System.Text.Json المدمجة في .NET، ومع Newtonsoft.Json استبدل الوسم بالوسم [JsonProperty].
- الصيغة = new(); تحتاج C# 9 أو أحدث.
أسئلة شائعة عن هذه الأداة
لماذا توجد علامة ? بعد بعض الأنواع؟
تعني أن القيمة قد تكون null، وتظهر للحقل الذي كان null أو غاب في بعض عناصر المصفوفة.
لماذا تغير اسم خاصية إلى RootValue؟
لغة C# لا تسمح بخاصية تحمل اسم الصنف نفسه، فيضاف Value ويبقى المفتاح الأصلي في الوسم.
هل ترسل بياناتي إلى خادم؟
لا، التحويل يعمل داخل متصفحك ولا يغادر نص JSON جهازك.
