Nello script precedente, abbiamo visto come serializzare il tipo DateOnly. In questo script ci occupiamo invece del tipo TimeOnly. Anche in questo caso, System.Text.Json non ne supporta la serializzazione e la deserializzazione, quindi queste operazioni falliranno se le effettuaiamo su un tipo TimeOnly o su un oggetto che ha una proprietà di tipo TimeOnly.
Così come per DateOnly, possiamo creare un converter anche per TimeOnly sfruttando gli stessi meccanismi. Il codice del converter è il seguente.
public class TimeOnlyJsonConverter : JsonConverter<TimeOnly> { public override TimeOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { int hours = 0; int minutes = 0; int seconds = 0; reader.Read(); while (reader.TokenType != JsonTokenType.EndObject) { if (reader.TokenType == JsonTokenType.PropertyName) { if (reader.GetString() == "hours") { reader.Read(); hours = reader.GetInt32(); } else if (reader.GetString() == "minutes") { reader.Read(); minutes = reader.GetInt32(); } else if (reader.GetString() == "seconds") { reader.Read(); seconds = reader.GetInt32(); } } reader.Read(); } return new TimeOnly(hours, minutes, seconds); } public override void Write(Utf8JsonWriter writer, TimeOnly value, JsonSerializerOptions options) { writer.WriteStartObject(); writer.WritePropertyName("hours"); writer.WriteNumberValue(value.Hours); writer.WritePropertyName("minutes"); writer.WriteNumberValue(value.Minutes); writer.WritePropertyName("seconds"); writer.WriteNumberValue(value.Seconds); writer.WriteEndObject(); } }
Per prima cosa, il converter deve ereditare da JsonConverter
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Monitorare e prevenire problemi in produzione
Innestare una query nel metodo Contains di Entity Framework Core
Taggare automaticamente un repository con un workflow di GitHub
Personalizzare le richieste con i rule set di Azure Front Door
Utilizzare la parola chiave file nel codice C#
Creare automaticamente una issue di GitHub
Installazione di una PWA Blazor
Utilizzare la cancellazione logica in Azure Container Registry
Leggere la configurazione da Azure KeyVault con logica di retry in ASP.NET Core
Utilizzare WordPress con Azure App Service
Introduzione al nuovo tipo TimeOnly di .NET
Dependency Injection e custom validator in Blazor con .NET 7.0
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestire il breaking change di Entity Framework Core 7 con tabelle che usano identity e trigger
- Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Speciale Visual Studio 2013 e .NET Framework 4.5.1: One ASP.NET, Windows 8.1, Entity Framework 6