.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
Ricevere notifiche sui test con Azure Load Testing
Utilizzare Container Queries nominali
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Generare una User Delegation SAS in .NET per Azure Blob Storage
Creare una libreria CSS universale: i bottoni
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Usare le navigation property in QuickGrid di Blazor
La gestione della riconnessione al server di Blazor in .NET 9
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Gestione dell'annidamento delle regole dei layer in CSS
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Eseguire query in contemporanea con EF
- 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!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!