.net core WebApi: eigenen JsonConverter schreiben

Da auch .net core 3.0 immer noch nicht korrekt mit TimeSpan klarkommt, habe ich mir einen Converter selbst geschrieben:

public class TimeSpanConverter : JsonConverter<TimeSpan> {

    public override TimeSpan Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) {
        return TimeSpan.Parse(reader.GetString());
    }

    public override void Write(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options) {
        writer.WriteStringValue(value.ToString(@"hh\:mm"));
    }
}

Das mit der Annotation hab ich nicht hinbekommen, aber man kann diesen für alle TimeSpans in der startup.cs registrieren:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews().AddJsonOptions(options => {
        options.JsonSerializerOptions.Converters.Add(new TimeSpanConverter());
    });
}

Mehr muss nicht getan werden!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.