Yeni tanıtılan işlevle UnmappedMemberHandling Nasıl System.Text.Json Çıkarılırsa nesnedeki krallıklardan daha fazla özellik varsa davranın.
Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.
Aşağıdaki örnek kodda, bu JSON işaretleri zincirine ait bir “şehir” vardır, ancak karşılık gelen özellikler yoktur City sınıfta Consultant Ve onların temel sınıfı Person.
Sınıflar Consultant VE Person Önceki bölümde zaten kullanılmış ve burada çoğaltılmamışlardır. İsim Sözleşmesinin tutumu 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);
}
Şimdiye kadar yapardı System.Text.Json Sadece daha fazla bilgiyi görmezden geldi. Bu hala standartta geçerlidir. Ek açıklama ile [JsonUnmappedMemberHandling] Sınıf veya mülkte arzu edilecek UnmappedMemberHandling konuyla ilgili JsonSerializerOptions Şimdi geliştiricileri değiştirebilir: Değerlere izin verilir Skip (Eskisi gibi görmezden gelin) e Disallow.
Aşağıdaki ayarı Disallow Sonra yukarıdakileri çöz Deserialize() “JSON” City “mülkiyeti,” fcl_json.consultant “türü” içinde bulunan herhangi bir üye .NET ile eşleştirilemedi.
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))
BetterCode Online Konferansı () .NET 9.0 of 19 Kasım 2024'te IX ve dpunkt.verlag .net-Expert www.it-visions.de'den. Bunlar. Program altı ders, tartışma ve altı seminer sunuyor.
Biletler erken bir fiyata mevcuttur.
(RME)

Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.
Aşağıdaki örnek kodda, bu JSON işaretleri zincirine ait bir “şehir” vardır, ancak karşılık gelen özellikler yoktur City sınıfta Consultant Ve onların temel sınıfı Person.
Sınıflar Consultant VE Person Önceki bölümde zaten kullanılmış ve burada çoğaltılmamışlardır. İsim Sözleşmesinin tutumu 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);
}
Şimdiye kadar yapardı System.Text.Json Sadece daha fazla bilgiyi görmezden geldi. Bu hala standartta geçerlidir. Ek açıklama ile [JsonUnmappedMemberHandling] Sınıf veya mülkte arzu edilecek UnmappedMemberHandling konuyla ilgili JsonSerializerOptions Şimdi geliştiricileri değiştirebilir: Değerlere izin verilir Skip (Eskisi gibi görmezden gelin) e Disallow.
Aşağıdaki ayarı Disallow Sonra yukarıdakileri çöz Deserialize() “JSON” City “mülkiyeti,” fcl_json.consultant “türü” içinde bulunan herhangi bir üye .NET ile eşleştirilemedi.
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))
BetterCode Online Konferansı () .NET 9.0 of 19 Kasım 2024'te IX ve dpunkt.verlag .net-Expert www.it-visions.de'den. Bunlar. Program altı ders, tartışma ve altı seminer sunuyor.
Biletler erken bir fiyata mevcuttur.
(RME)