چگونه به صورت خودکار کدهای یک کلاس C# را از روی یک شی JSON بسازیم؟
فرض کنید که رشته JSON زیر به ما داده شده و از ما خواسته اند که از روی آن کلاس های مرتبط در C# را ایجاد کنیم:
{
"name": "",
"address": {
"street": "",
"city": "",
"province": "",
"postalCode": "",
"country": ""
},
"phoneDay": "",
"phoneCell": "",
"businessName": "",
"website": "",
"email": ""
}
کلاسهای خروجی مورد نیاز پس از تبدیل به این صورت است:
public class ContactInfo
{
public string Name { get; set; }
public Address Address { get; set; }
public string PhoneDay { get; set; }
public string PhoneCell { get; set; }
public string BusinessName { get; set; }
public string Website { get; set; }
public string Email { get; set; }
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string Province { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }
}
برای تولید کلاسهای C# از یک شی JSON، چندین ابزار و فناوری مختلف در دسترس است که هر کدام مزایا و معایب خاص خود را دارند:
1. استفاده از ابزارهای موجود در اینترنت:
- jsonutils.com یک وبسایت رایگان است که به شما اجازه میدهد تا JSON را به کلاسهای C# تبدیل کنید، بدون اینکه نیاز به نصب نرمافزار داشته باشید.
- همچنین json2csharp.com گزینه خوبی برای انجام این کار هستند.
- گزینه دیگر استفاده از app.quicktype.io است. این گزینه نیز امکان تبدیل رشته جی سان به کلاس های زبان های مختلف را در اختیار شما قرار می دهد.
2. استفاده از Visual Studio:
از نسخه 2012 به بعد، Visual Studio به طور داخلی این ویژگی را پشتیبانی میکند. با کپی کردن یک رشته JSON و استفاده از گزینه "Paste JSON as Classes" در منوی Edit گزینه Paste Special، کلاسهای مورد نظر به راحتی تولید میشوند. این ویژگی در نسخههای جدیدتر Visual Studio بهبود یافته و به سادگی دسترسی به آن وجود دارد.
3. ابزارهای اکسترنال:
ابزار jsonclassgenerator علیرغم اینکه نیاز به دانلود و نصب دارد، قابلیتهای خاصی ارائه میدهد، مانند تبدیل نامها به PascalCase. این ابزار برای مواردی مفید است که میخواهید به طور مکرر مدلها را از یک API mock بهروزرسانی کنید و به همین دلیل میتواند به شکل یک اسکریپت اتوماسیون شده تنظیم شود.