.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
Evitare memory leaks nelle closure JavaScript
Gestire pubblicazione Kubernetes tramite .NET Aspire
Interagire con Azure DevOps tramite MCP Server
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare DeepSeek R1 con Azure AI
Arricchire l'interfaccia di .NET Aspire
Abilitare il rolling update su Azure Functions flex consumption
Integrare Agenti A2A in Azure API Management
Effettuare un clone parziale di un repository di GitHub
Gestire progetti NPM in .NET Aspire
Gestione delle scrollbar dinamiche in HTML e CSS
La gestione della riconnessione al server di Blazor in .NET 9


