TimeSpan için varsayılan serileştirme biçimi
System.Text.Json için .NET 6 GA desteği TimeSpan eklendi, ancak bu değişiklik kaynak oluşturucular için destek içermiyor. .NET 6 servicing release 6.0.2 sürümünde, System.Text.Json değerlerin kaynak oluşturucu serileştirmesi TimeSpan için destek içerir. Bu destek, kaynak oluşturuculardaki değerler için TimeSpan varsayılan serileştirme biçimini değiştirir.
Önceki davranış
.NET 6 GA'da kaynak oluşturucular, nesnelerin varsayılan serileştirme davranışı olan türün tüm genel özelliklerini çıkararak değerleri seri hale getirmektedir TimeSpan :
{"days":2,"hours":0,"milliseconds":0,"minutes":0,"seconds":1,"ticks":1728010000000,"totalDays":2.0000115740740743,"totalHours":48.000277777777775,"totalMilliseconds":172801000,"totalMinutes":2880.016666666667,"totalSeconds":172801}
Yeni davranış
.NET 6.0.2 hizmet sürümünde, kaynak oluşturucular değerleri yansıma tabanlı serileştirici biçimiyle tutarlı olan aşağıdaki biçimde serileştirir TimeSpan :
"2.00:00:01"
Sürüm kullanıma sunulmuştur
.NET 6.0.2 (bakım sürümü)
Hataya neden olan değişikliğin türü
Bu değişiklik ikili uyumluluğu etkileyebilir.
Değişiklik nedeni
System.Text.Json kaynak oluşturma yeni bir özelliktir ve serileştirme davranışı yansıma tabanlı seri hale getirici ile mümkün olduğunca tutarlı olmalıdır. Bu değişiklik, kaynak oluşturuculara geçişi basitleştirir.
Önerilen eylem
Kullanıcıların geçerli TimeSpan serileştirme biçimine bağımlı olma olasılığı düşüktür çünkü türün tüm genel özelliklerini yedekli olarak çıkarmaktadır (nesneler için varsayılan serileştirme davranışıdır) ve gidiş dönüş yoktur.
Mevcut davranışa bağlıysanız, önerilen eylem kursu, 'den TimeSpangerekli özelliklerin çıkışını veren özel bir dönüştürücü yazmaktır:
public class TimeSpanConverter : JsonConverter<TimeSpan>
{
public void WriteValue(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WriteNumber("days", value.Days);
writer.WriteNumber("hours", value.Hours);
/* insert any needed properties here */
writer.WriteEndObject();
}
}
Etkilenen API’ler
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin