Yeni eklenen fonksiyonla UnmappedMemberHandling
nasıl olduğuyla ilgili System.Text.Json
seri durumdan çıkarma sırasında nesnede özelliklerden daha fazla özellik olduğunda davranır.
Duyuru
Dr. Holger Schwichtenberg, 53 tanınmış uzmanıyla danışmanlık, eğitim ve yazılım geliştirme yoluyla çok sayıda orta ve büyük ölçekli şirketi destekleyen www.IT-Visions.de uzman ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası konferansa katılımı, 90'dan fazla uzmanlık kitabı ve 1.500'den fazla uzmanlık makalesi sayesinde Holger Schwichtenberg, .NET ve web teknolojileri konusunda Almanya'nın en tanınmış uzmanlarından biridir.
Aşağıdaki örnek kodda, bu JSON dizesinde “CITY” özelliği var ancak buna karşılık gelen bir özellik yok City
sınıfta Consultant
ve temel sınıfı Person
.
Sınıflar Consultant
VE Person
bunlar önceki bölümde zaten kullanılmıştı ve burada tekrarlanmadı. Adlandırma kuralının durdurulması da tartışıldı.
try
{
var jsonString = """
{
"ID":42,
"FULL-NAME":"Holger Schwichtenberg",
"PERSONAL-WEBSITE":"www.dotnet-doktor.de",
"CITY":"Essen"
}
""";
Console.WriteLine("JSON: " + jsonString);
var obj = JsonSerializer.Deserialize<Consultant>(jsonString, options);
if (obj != null) CUI.Success(obj.ToString());
}
catch (Exception ex)
{
CUI.PrintError(ex.Message);
}
Şu ana kadar System.Text.Json
Daha fazla bilgi basitçe göz ardı edilir. Standart versiyonda da durum aynıdır. Ek açıklama yoluyla [JsonUnmappedMemberHandling]
seri durumdan çıkarılacak sınıf veya mülkte UnmappedMemberHandling
nesnede JsonSerializerOptions
Geliştiriciler artık bunu değiştirebilir: izin verilen değerler Skip
(Daha önce olduğu gibi yoksay) e Disallow
.
Aşağıdaki atış Disallow
Yani yukarıdakileri çözer Deserialize()
bir çalışma zamanı hatası: “JSON özelliği 'CITY', 'FCL_JSON.Consultant' türünde bulunan herhangi bir .NET üyesiyle eşlenemez.”
var options = new JsonSerializerOptions
{
// NEU: Enumeration JsonNamingPolicy mit Namenskonventionen
// KebabCaseLower, KebabCaseUpper, SnakeCaseLower
// und SnakeCaseUppter als Alternative zum
// bisher fest gesetzten CamelCase
PropertyNamingPolicy = JsonNamingPolicy.KebabCaseUpper,
// Standard wäre CamelCase
// NEU: Einstellungen zur Handhabung zusätzlicher Daten
// bei der Deserialisierung von JSON in Objekten
// via Annotation [JsonUnmappedMemberHandling]
// oder Eigenschaft UnmappedMemberHandling
// im Objekt JsonSerializerOptions.
UnmappedMemberHandling = JsonUnmappedMemberHandling.Disallow,
// Default wäre Skip
};
(Resim: Dmytro Vikarchuk/Shutterstock))
iX ve dpunkt.verlag tarafından 19 Kasım 2024'te düzenlenecek BetterCode() .NET 9.0 çevrimiçi konferansında, www.IT-Visions.de adresindeki .NET uzmanları pratik örnekler kullanarak .NET 9.0'ın son sürümünü sunacaklar. Bunlar arasında .NET 9.0 SDK, C# 13.0, ASP.NET Core 9.0, Blazor 9.0, Windows Forms 9.0, WPF 9.0, WinUI, .NET MAUI 9.0'daki yenilikler ve yapay zekanın .NET uygulamalarına entegrasyonu yer alıyor. Programda altı ders, bir tartışma ve altı atölye çalışması yer alıyor.
Biletler peşin fiyatlarla mevcuttur.
(kendim)
Bir yanıt yazın