.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
Aggiornare a .NET 9 su Azure App Service
Recuperare App Service cancellati su Azure
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Potenziare la ricerca su Cosmos DB con Full Text Search
Generare una User Delegation SAS in .NET per Azure Blob Storage
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Gestione degli eventi nei Web component HTML
Gestire i dati con Azure Cosmos DB Data Explorer
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Anonimizzare i dati sensibili nei log di Azure Front Door
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework