ابوراجا
ابوراجا
خواندن ۲ دقیقه·۴ سال پیش

کار با json در dot net core با System.Text.Json

از نگارش dot net core 3 به بعد مایکروسافت بسته ای تحت عنوان System.Text.Json ارائه داد که امکان کار با json را فراهم می کرد. در توضیح این بسته گفته می شود که در مقایسه با کتابخانه معروف newtonsoft.json بسیار سریع تر است و برای عملیات تبدیل میزان رم کمتری هم مصرف می کند.


این بسته به صورت توکار در بسته dot net core 3.0 و بالاتر وجود دارد. اما اگر از نگارش های پایین تر استفاده می کنید باید بسته System.Text.Json را از nuget نصب کنید.

این کتابخانه از فریم ورک های زیر پشتیبانی میکند:

.NET Standard 2.0 and later versions .NET Framework 4.7.2 and later versions .NET Core 2.0, 2.1, and 2.2


طرز کار کتابخانه:

استفاده از کتابخانه راحت است. برای Serialize کردن از کد زیر استفاده می کنیم

string jsonstring = JsonSerializer.Serialize(sampleClassModel);

البته namespace های مربوط فراموش نشود

using System.Text.Json; using System.Text.Json.Serialization;

برای Deserialize کردن هم از متد زیر استفاده میکنیم:

sampleClass = JsonSerializer.Deserialize<sampleClassModel>(jsonString);


سایر امکانات

معمول ترین کاربردها و شیوه استفاده به همین صورت بالا می باشد. اما گاهی اوقات نیازها پیچیده تر می شود. مثلا نیاز دارید که enum را به صورت متن دریافت کنید، در حالی که به صورت پیش فرض عدد مربوطه را برمیگرداند. یا میخواهید خروجی json دندانه دار باشد که خوانایی بیشتر است. خوشبختانه اکثر این امکانات از قبل پیاده سازی شده و ما فقط نیاز داریم آن را تنظیم کنیم.

- خروجی json قالب بندی شده باشد:

var options = new JsonSerializerOptions { WriteIndented = true, }; jsonString = JsonSerializer.Serialize(sampleClassModel, options);

- خروجی CamelCase باشد:

var serializeOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true}; jsonString = JsonSerializer.Serialize(sampleClassModel, serializeOptions);

- خروجی enum ها string باشد.

options = new JsonSerializerOptions(); options.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase)); options.WriteIndented = true; jsonString = JsonSerializer.Serialize(sampleClassModel, options);

این کتابخانه امکانات زیاد دیگری دارد که می توانید بسته به نیاز از آنها استفاده کنید.


دات نتdotnet corejsonدات نت کرjson net
راهنمای سفر به کهکشان برنامه نویسی و خیلی چیزا :)
شاید از این پست‌ها خوشتان بیاید