.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
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Eliminare una project wiki di Azure DevOps
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Referenziare un @layer più alto in CSS
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Utilizzare Locust con Azure Load Testing
Applicare un filtro per recuperare alcune issue di GitHub
Collegare applicazioni server e client con .NET Aspire
Migliorare l'organizzazione delle risorse con Azure Policy
Ridurre il reflow ottimizzando il CSS
Supportare la crittografia di ASP.NET Core con Azure Container App
I più letti di oggi
- Sfruttare i nuovi overload di TimeSpan.From* per creare timespan usando numeri interi
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- 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!