Chuyển JSON sang lớp C#
Tạo lớp C# từ JSON với thuộc tính PascalCase, attribute [JsonPropertyName], kiểu tham chiếu nullable và collection List<T>. Miễn phí và riêng tư.
Dùng thuộc tính của System.Text.Json và kiểu tham chiếu nullable (string?, long?).
Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Công cụ Liên quan
Xem Tất cảJSON sang C# là gì?
Biến một mẫu JSON thành các lớp C# dùng cho System.Text.Json. Mọi thuộc tính đều viết PascalCase, có attribute [JsonPropertyName("…")] chứa khóa gốc và dùng kiểu nullable khi mẫu có giá trị null hoặc bị thiếu.
Cách sử dụng JSON sang C#
- Dán mẫu JSON vào ô JSON đầu vào (hoặc nhấn Tải ví dụ / Mở tệp).
- Đặt Tên kiểu gốc (mặc định là
Root). - Sao chép mã C# được tạo ra hoặc nhấn Tải xuống để lưu thành tệp.
Ví dụ
{"id":1,"name":"A","tags":["x"]} using System.Collections.Generic;
using System.Text.Json.Serialization;
public class Root
{
[JsonPropertyName("id")]
public long Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
[JsonPropertyName("tags")]
public List<string> Tags { get; set; } = new();
} Khi nào nên dùng JSON sang C#
Dùng cho HTTP client .NET, model ASP.NET hoặc dữ liệu kiểm thử. Với Newtonsoft.Json, hãy thay attribute bằng [JsonProperty]; với giá trị tiền tệ, nên cân nhắc đổi double thành decimal.
JSON sang C# hoạt động như thế nào
Mẫu JSON được duyệt đệ quy và mỗi vị trí ghi nhận các kiểu dữ liệu đã gặp. Mảng đối tượng được gộp thành một kiểu: khóa thiếu ở một số phần tử trở thành tùy chọn, khóa có giá trị null ở đâu đó trở thành nullable, số nguyên trộn với số thập phân trở thành kiểu số thực, và mọi trường hợp trộn kiểu khác sẽ dùng kiểu động. Đối tượng lồng nhau trở thành kiểu có tên riêng (tên khóa viết PascalCase, khóa mảng được chuyển về số ít: orders → Order), kèm hậu tố số khi trùng tên. Đầu ra C# ánh xạ số nguyên thành long, số thập phân thành double, chuỗi thành string, boolean thành bool, mảng thành List<T>, đối tượng lồng nhau thành lớp riêng và giá trị động thành object?. Giá trị nullable hoặc tùy chọn có thêm ?; chuỗi không nullable được khởi tạo bằng string.Empty, còn danh sách hoặc đối tượng bằng new(), nên mã biên dịch sạch khi bật nullable reference types.
Các Trường Hợp Sử Dụng Phổ Biến
- Deserialize phản hồi API bằng HttpClient và System.Text.Json
- Tạo model request/response cho controller ASP.NET
- Mô hình hóa các phần cấu hình JSON
- Tạo lớp cho trigger của Azure Function
Câu Hỏi Thường Gặp
Vì sao thuộc tính nào cũng có attribute?
Attribute giữ đúng khóa JSON ngay cả khi tên C# khác đi, nên serialize/deserialize hai chiều luôn khớp bất kể chính sách đặt tên.
Vì sao dùng double thay vì decimal?
JSON không có kiểu decimal; double khớp với kết quả mà trình phân tích tạo ra. Hãy dùng decimal cho giá trị tiền tệ.
Có dùng được với Newtonsoft.Json không?
Có, sau khi thay [JsonPropertyName] bằng [JsonProperty] và đổi chỉ thị using.