.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
Q# for Quantum Programming, an "only for the brave" session
Autenticazione con Minimal API di ASP.NET Core 6
Creare un'istanza di Azure SQL Database tramite ARM
Tracciare gli eventi tramite i DevTools di Chrome
Recuperare la data di creazione e ultima modifica di un record con Entity Framework Core e le temporal table di SQL Server
Produttività con ASP.NET Core 6
Eseguire uno scroll all'interno di una pagina Blazor
Confronto tra moduli in Javascript: ES e commonJS
Commentare una issue associata ad una pull request tramite un workflow di GitHub
Effettuare un deployment differenziale con una GitHub Action
Test reporting in un workflow di GitHub
Gestione dei domini e certificati in AWS con Terraform
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