×

Xử lý dữ liệu JSON với lớp JsonSerializer trong C#

Trong quá trình phát triển ứng dụng với ngôn ngữ lập trình C#, việc xử lý dữ liệu JSON đã trở nên vô cùng phổ biến và thiết yếu. Một công cụ hữu hiệu để thực hiện các thao tác này là lớp JsonSerializer thuộc thư viện System.Text.Json. Bài viết này sẽ khám phá cách sử dụng lớp này để serial hóa và deserial hóa dữ liệu JSON trong C#.

Tạo Đối Tượng Mẫu

Trước tiên, chúng ta cần có một đối tượng mẫu để thực hiện các thao tác. Đây là một lớp đơn giản mang tên Person:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

Serial Hóa Đối Tượng

Serial hóa là quá trình chuyển đổi đối tượng C# thành chuỗi JSON. Để thực hiện serial hóa, chúng ta sử dụng phương thức JsonSerializer.Serialize:

Person person = new Person
{
    FirstName = "John",
    LastName = "Doe",
    Age = 30
};

string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);

Chạy đoạn mã trên, chuỗi JSON sẽ có dạng:

{"FirstName":"John","LastName":"Doe","Age":30}

Deserial Hóa Dữ Liệu JSON

Ngược lại với serial hóa, deserial hóa là quá trình chuyển đổi chuỗi JSON thành đối tượng C#. Để deserial hóa, chúng ta sử dụng phương thức JsonSerializer.Deserialize:

string jsonString = "{\"FirstName\":\"John\",\"LastName\":\"Doe\",\"Age\":30}";
Person person = JsonSerializer.Deserialize<Person>(jsonString);

Console.WriteLine($"Name: {person.FirstName} {person.LastName}, Age: {person.Age}");

Đoạn mã trên sẽ xuất ra:

Name: John Doe, Age: 30

Tuỳ Biến Quá Trình Serial Hóa/Deserial Hóa

Lớp JsonSerializer cung cấp nhiều tùy chọn để tùy biến quá trình serial hóa và deserial hóa. Một số tùy chọn phổ biến bao gồm định dạng chuỗi, xử lý null, và cấu hình thuộc tính nào sẽ được bao gồm trong JSON.

Dưới đây là ví dụ cho việc tùy chỉnh định dạng chuỗi ngày tháng:

public class Event
{
    public string Name { get; set; }
    public DateTime Date { get; set; }
}

var event = new Event
{
    Name = "Conference",
    Date = DateTime.Now
};

var options = new JsonSerializerOptions
{
    WriteIndented = true,
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};

string jsonString = JsonSerializer.Serialize(event, options);
Console.WriteLine(jsonString);

Xử Lý Null và Thuộc Tính Không Cần Thiết

Đôi lúc bạn có thể muốn bỏ qua các thuộc tính có giá trị null hoặc không cần thiết trong quá trình serial hóa. Điều này có thể dễ dàng thực hiện thông qua các tuỳ chọn của JsonSerializer:

var options = new JsonSerializerOptions
{
    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
};

string jsonString = JsonSerializer.Serialize(person, options);
Console.WriteLine(jsonString);

Kết Luận

Xử lý dữ liệu JSON trong C# trở nên dễ dàng và tiện lợi với lớp JsonSerializer từ thư viện System.Text.Json. Nó cung cấp các phương thức mạnh mẽ và linh hoạt giúp bạn chuyển đổi giữa đối tượng C# và chuỗi JSON nhanh chóng. Bằng cách tận dụng các tuỳ chọn cấu hình, bạn có thể tùy chỉnh quá trình serial hóa và deserial hóa để đáp ứng các yêu cầu cụ thể của ứng dụng.

Comments