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
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Effettuare il binding di date in Blazor
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Recuperare App Service cancellati su Azure
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Gestione dell'annidamento delle regole dei layer in CSS
Sostituire la GitHub Action di login su private registry
Utilizzare Tailwind CSS all'interno di React: installazione
Implementare l'infinite scroll con QuickGrid in Blazor Server
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Utilizzare i primary constructor di C# per inizializzare le proprietà