.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
Creare un indice su una colonna JSON in SQL Server
Applicare il progressive enhancement in applicazioni web
Abilitare .NET 10 su Azure App Service e Azure Functions
Testare le API di Azure Resource Manager con API Playground
Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor
Blue/Green Release in locale con .NET Aspire
Utilizzo di CSS Scroll Snap per realizzare un carousel
Impostare il tipo di supporto dei campi Json in Entity Framework con Sql Server
Utilizzo delle stepped value functions nel CSS
Impostare automaticamente l'altezza del font tramite CSS
Utilizzare le librerie native di .NET per decomprimere un file zip
Welcome to Future Dev Day 2026


