.NET 6 ha introdotto il tipo DateOnly. System.Text.Json non ne supporta la serializzazione e la deserializzazione, quindi queste operazioni falliranno se le effettuaiamo su un tipo DateOnly o su un oggetto che ha una proprietà di tipo DateOnly.
Grazie all'estensibilità della libreria System.Text.Json, possiamo creare un custom converter che ci permette di serializzare e deserializzare un oggetto di tipo DateOnly decidendo noi il formato. Il codice del converter è il seguente.
public class DateOnlyJsonConverter : JsonConverter<DateOnly> { public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { int day = 0; int month = 0; int year = 0; reader.Read(); while (reader.TokenType != JsonTokenType.EndObject) { if (reader.TokenType == JsonTokenType.PropertyName) { if (reader.GetString() == "day") { reader.Read(); day = reader.GetInt32(); } else if (reader.GetString() == "month") { reader.Read(); month = reader.GetInt32(); } else if (reader.GetString() == "year") { reader.Read(); year = reader.GetInt32(); } } reader.Read(); } return new DateOnly(year, month, day); } public override void Write(Utf8JsonWriter writer, DateOnly value, JsonSerializerOptions options) { writer.WriteStartObject(); writer.WritePropertyName("day"); writer.WriteNumberValue(value.Day); writer.WritePropertyName("month"); writer.WriteNumberValue(value.Month); writer.WritePropertyName("year"); writer.WriteNumberValue(value.Year); 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
Triggerare una pipeline su un altro repository di Azure DevOps
Gestione dei nomi con le regole @layer in CSS
C# 12: Cosa c'è di nuovo e interessante
Miglioramenti agli screen reader e al contrasto in Angular
Ordine e importanza per @layer in CSS
Creare un webhook in Azure DevOps
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Sostituire la GitHub Action di login su private registry
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Utilizzare Azure Cosmos DB con i vettori
Creare un'applicazione React e configurare Tailwind CSS
Come EF 8 ha ottimizzato le query che usano il metodo Contains
I più letti di oggi
- Creare un adorner personalizzato per le trading cards di PivotViewer in Silverlight 5.0
- Copiare uno Stream con il .NET Framework 4.0
- Supporto alla validazione client-side in una data annotation su ASP.NET MVC 3
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Dependency injection con Minimal API di ASP.NET Core
- Migliorare l'organizzazione delle risorse con Azure Policy
- Sfruttare una CDN con i bundle di ASP.NET
- Creare applicazioni in real-time con ASP.NET SignalR
- Memorizzare posizione e dimensioni della finestra di una applicazione OOB Silverlight 4.0
- Web Camp - HTML5 per il web di oggi