تكرار السؤال: …
الإجابة المختصرة
يعتمد على معالجة تدفقات UTF-8 مباشرة (ReadOnlySpan<byte>) دون تحويل لنصوص UTF-16، ويتجنب تخصيص الكائنات في الـ Heap ويدعم الـ Source Generation.
الشرح
قديماً، كانت مكتبة Newtonsoft تقرأ البيانات كنصوص string، وتنشئ كائنات وسيطة كثيرة وتعتمد بشدة على Reflection. صُمم System.Text.Json من الصفر في .NET Core للاستفادة من بنى الأداء الفائق مثل Utf8JsonReader و ArrayPool. مع دعم JsonSourceGeneration، يتم تسلسل وفك تسلسل البيانات بسرعة فائقة وصفر تخصيصات إضافية وتوافق تام مع Native AOT.
مثال بالكود
[JsonSerializable(typeof(UserDto))]
internal partial class AppJsonSerializerContext : JsonSerializerContext {}
// استخدام المولد المسبق فائق السرعة
var json = JsonSerializer.Serialize(user, AppJsonSerializerContext.Default.UserDto);أخطاء شائعة
- الاحتفاظ بمكتبة Newtonsoft.Json في المشاريع الحديثة دون مسوغ حقيقي، مما يحرم التطبيق من مضاعفة سرعة تسلسل الـ JSON.