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
Sottoscrizione agli eventi sul contenitore in JavaScript
Usare il versioning con i controller di ASP.NET Core Web API
Gestire la query string nell'output cache di ASP.NET Core
.NET Conference Italia 2023
Confronto tra moduli in Javascript: ES e commonJS
Q# for Quantum Programming, an "only for the brave" session
Effettuare l'upload di un file via FTP con la libreria FluentFTP di .NET
Reactive form tipizzati con FormBuilder in Angular
Le novità di .NET 7 e C# 11
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
Usare gateway dedicati con Azure Cosmos DB per migliorare le prestazioni
I più letti di oggi
- Creare dei grafici con OWC
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Prima beta pubblica per il SP1 del .NET Framework 3.5 e VS 2008
- Speciale ADO.NET: accesso ai dati con il .NET Framework
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare la direttiva ngSrc di AngularJS per ottimizzare il caricamento delle immagini
- Utilizzare i collapse di Bootstrap 4
- Caricare i dati di configurazione allo startup di un'applicazione Angular