تحويل JSON إلى C# class

تكتب الأداة صنفا لكل كائن جاهزا للاستخدام مع JsonSerializer.Deserialize في .NET.

جارٍ تحميل الأداة…

المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.

طريقة الاستخدام

  1. أدخل نص JSON واسم النوع الرئيسي.
  2. تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
  3. انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.

طريقة الحساب

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 جهازك.