JSON serileştiricisi System.Text.Json
(NuGet paketi) 8.0 sürümünde bazı iyileştirmeler aldı.
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.
Entity Framework Core 8.0 gibi .NET 8.0'ın diğer bölümlerinin aksine System.Text.Json
yalnızca .NET 8.0'da değil, aynı zamanda eski .NET sürümlerinde de. System.Text.Json
4.6.2 sürümündeki klasik .NET Framework ve 2.0 sürümündeki modern .NET ile çalışır.
Sürüm 8.0, nesne özelliklerini JSON'a serileştirmek ve JSON'dan seri durumdan çıkarmak için adlandırma kurallarını kullanır KebabCaseLower
, KebabCaseUpper
, SnakeCaseLower
VE SnakeCaseUpper
numaralandırmada JsonNamingPolicy
daha önce belirlenmiş olana alternatif olarak CamelCasing
.
Bu adlandırma kurallarına örnekler şunları içerir:
PascalCase
: Adı ve soyadıCamelCase
: Adı ve soyadıKebabCaseLower
: Adı ve soyadıKebabCaseUpper
: ADI VE SOYADISnakeCaseLower
: Adı ve soyadıSnakeCaseUpper
: ADI VE SOYADI
Aşağıdaki listede geliyor KebabCaseUpper
sınıfın bir örneğini serileştirirken ve seri durumdan çıkarırken Consultant
kullanmak için:
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 ist CamelCase
};
…
var consultant = new Consultant() { ID = 42, FullName = "Holger Schwichtenberg", Salutation = "Dr.", PersonalWebsite = "www.dotnet-doktor.de" };
consultant.Languages.AddRange(["C#", "JavaScript", "TypeScript"]);
consultant.Address = new Address() { City = "Essen", Country = "Germany" };
Console.WriteLine("Objekt im RAM:");
Console.WriteLine(consultant);
Console.WriteLine();
CUI.H3("Serialisierung (KebabCaseUpper):");
string json1 = JsonSerializer.Serialize(consultant, options);
Console.WriteLine(json1); // {"ID":42,"FULL-NAME":"Holger Schwichtenberg","SALUTATION":"Dr.","PERSONAL-WEBSITE":"www.dotnet-doktor.de"}
…
CUI.H3("nDeserialisierung: (vollständig)");
try
{
var jsonString = """
{"ID":42,"FULL-NAME":"Holger Schwichtenberg","SALUTATION":"Dr.",
"PERSONAL-WEBSITE":"www.dotnet-doktor.de",
"ADDRESS":{"COUNTRY":"Germany","CITY":"Essen"}}
""";
Console.WriteLine(jsonString);
var obj = JsonSerializer.Deserialize<Consultant>(jsonString, options);
if (obj != null) CUI.Success(obj.ToString());
}
catch (Exception ex)
{
CUI.PrintError(ex.Message);
}
Aşağıdaki Liste 2 veri nesnelerini gösterir Person
VE Consultant
ve arayüzleri:
using System.Text.Json.Serialization;
namespace FCL_JSON;
public interface IBusinessObject
{
UInt128 ID { get; init; }
}
public interface IPerson : IBusinessObject
{
string? Salutation { get; set; }
string? FullName { get; set; }
public Address Address { get; set; }
}
public interface IConsultant : IPerson
{
string? PersonalWebsite { get; set; }
public List<string> Languages { get; }
}
public class Address
{
public string Country { get; set; }
public string City { get; set; }
}
public class Person : IPerson
{
public Person() { }
public required UInt128 ID { get; init; }
public required string FullName { get; set; }
public string? Salutation { get; set; }
public Address Address { get; set; }
public override string ToString()
{
return $"Person {ID}: {(!String.IsNullOrEmpty(Salutation) ? Salutation + " " : "")}{FullName} wohnt in {Address?.City ?? "UNBEKANNT"} ";
}
}
public class Consultant : Person, IConsultant
{
public Consultant() { }
public List<string> Languages { get; } = new();
public string? PersonalWebsite { get; set; }
public override string ToString()
{
return $"Consultant {ID}: {(!String.IsNullOrEmpty(Salutation) ? Salutation + " " : "")}{FullName} wohnt in {Address.City} -> {PersonalWebsite} Sprachen: {String.Join('+', Languages)}";
}
}
(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