System.Text.Json ohne Reflection
- Matt
JsonSerializer.Serialize arbeitet standardmäßig über Reflection. Das kostet beim ersten Aufruf Zeit und funktioniert unter Native AOT gar nicht.
[JsonSerializable(typeof(Kunde))]
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
internal partial class AppJsonContext : JsonSerializerContext;
var json = JsonSerializer.Serialize(kunde, AppJsonContext.Default.Kunde);
Der Generator schreibt den Serialisierungscode beim Übersetzen. Man sieht ihn im Projektmappen-Explorer unter den Analysatoren, was beim Nachvollziehen hilft.
Der Haken: Jeder Typ muss angemeldet werden. Vergisst man einen, fällt das erst zur Laufzeit auf.