Tôi muốn giới thiệu Json.Net , xem ví dụ dưới đây:
List<data> _data = new List<data>();
_data.Add(new data()
{
Id = 1,
SSN = 2,
Message = "A Message"
});
string json = JsonConvert.SerializeObject(_data.ToArray());
//write string to file
System.IO.File.WriteAllText(@"D:\path.txt", json);
Hoặc phiên bản hiệu quả hơn một chút của mã trên (không sử dụng chuỗi làm bộ đệm):
//open file stream
using (StreamWriter file = File.CreateText(@"D:\path.txt"))
{
JsonSerializer serializer = new JsonSerializer();
//serialize object directly into file stream
serializer.Serialize(file, _data);
}
Tài liệu: Nối tiếp JSON vào một tệp
Tại sao? Đây là một so sánh tính năng giữa các serialisers phổ biến cũng như các bài kiểm tra điểm chuẩn † ‡.
Dưới đây là biểu đồ hiệu suất được lấy từ bài viết được liên kết:
Bài đăng riêng biệt này , nói rằng:
Json.NET luôn có hiệu quả bộ nhớ, phát trực tiếp việc đọc và viết các tài liệu lớn thay vì tải chúng hoàn toàn vào bộ nhớ, nhưng tôi đã có thể tìm thấy một vài vị trí quan trọng có thể giảm phân bổ đối tượng ...... (bây giờ) Json.Net (6.0) giao đất 8 lần ít bộ nhớ hơn JavaScriptSerializer ‡
Cập nhật kể từ .Net Core 3.0
Một đứa trẻ mới trên khối kể từ khi viết bài này System.Text.Json
đã được thêm vào .Net Core 3.0. Microsoft đưa ra một số tuyên bố về việc làm thế nào, bây giờ, tốt hơn Newtonsoft . Bao gồm cả nó nhanh hơn Newtonsoft . như trên, tôi muốn khuyên bạn nên tự kiểm tra này ‡ .
Điểm chuẩn xuất hiện là Json.Net 5, phiên bản hiện tại (bằng văn bản) là 10. Phiên bản nào của bộ nối tiếp .Net được sử dụng không được đề cập
Những thử nghiệm này rõ ràng là từ các nhà phát triển duy trì thư viện. Tôi chưa xác minh yêu cầu của họ . Nếu nghi ngờ hãy tự kiểm tra chúng.
JavaScriptSerializer
vàDataContractJsonSerializer
các lớp như thế nào?