.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
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Eseguire query in contemporanea con EF
Utilizzare Container Queries nominali
Creare agenti facilmente con Azure AI Agent Service
Creare una libreria CSS universale: Nav menu
Utilizzare DeepSeek R1 con Azure AI
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Recuperare le subissue e il loro stato di completamento in GitHub
Fornire parametri ad un Web component HTML
Combinare Container Queries e Media Queries
Generare una User Delegation SAS in .NET per Azure Blob Storage
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework


