.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
Ciclo di vita risorse con .NET Aspire
Evitare memory leaks nelle closure JavaScript
Usare la parola chiave field per semplificare la scrittura di proprietà in C#
Blazor e Static Web Assets in .NET 10
Utilizzare i command service nei test con .NET Aspire
Esporre workflow come server MCP con Azure Logic Apps
Eseguire i pre-commit hook di git con dependabot
Gestione delle scrollbar dinamiche in HTML e CSS
Escludere alcuni file da GitHub Copilot
Integrare OpenAI tramite Aspire
Esporre un server MCP con Azure API Management
Semplificare la gestione dei modelli con Azure AI Foundry Model Router
I più letti di oggi
- WinJS in Windows Phone 8.1
- Creare immagini con torte e grafici in tempo reale
- Grazie a tutti per aver partecipato a #aspilive.Trovate già il materiale su https://aspit.co/ReBuild-20Ci saranno anche le registrazioni nei prossimi giorni.Non perdete i nostri prossimi eventi! https://aspitalia.com/eventi/
- Tutto per portarsi ASP.NET 4.0, Silverlight 4.0 e .NET Framework 4.0 sotto l'ombrellone
- Aggiornamento Silverlight 4 SDK April 2011 Update
- Microsoft Security Bulletin MS05-007
- Universal Windows Platform Bridge: iOS
- App fluide e responsive per Windows Phone e Windows Store




