Json.Net'i tavsiye ederim , aşağıdaki örneğe bakın:
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);
Veya yukarıdaki kodun biraz daha verimli bir sürümü (arabellek olarak bir dize kullanmaz):
//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);
}
Belgeler: JSON'u bir dosyaya seri hale getirme
Neden? Burada yaygın serileştiriciler ve karşılaştırma testleri † ‡ arasında bir özellik karşılaştırması .
Bağlantılı makaleden alınan bir performans grafiği aşağıdadır:
Bu ayrı gönderi şunları belirtmektedir:
Json.NET her zaman bellek verimli olmuştur, okuma ve yazma büyük belgeleri tamamen belleğe yüklemek yerine, ama ben nesne tahsis azaltılabilir birkaç anahtar yerler bulmak mümkün ...... (şimdi) Json.Net (6.0) JavaScriptSerializer'dan 8 kat daha az bellek ayırır ‡
Net Core 3.0'dan beri güncelleme
Bunu yazdıktan sonra blokta yeni bir çocuk System.Text.Json
.Net Core 3.0'a eklendi. Microsoft, bunun Newtonsoft'tan daha iyi olduğu konusunda birkaç iddiada bulunuyor . O olduğunu dahil Newtonsoft daha hızlı . yukarıdaki gibi, bunu kendiniz test etmenizi tavsiye ederim ‡ .
† Deneyler Json.Net 5 gibi görünüyor, geçerli sürüm (yazılırken) 10'dur. Kullanılan standart .Net serileştiricilerinin hangi sürümünden bahsedilmez
Tests Bu testler açık bir şekilde kütüphaneyi koruyan geliştiriciler tarafından yapılmıştır. Onların iddialarını doğrulamamıştım . Şüpheniz varsa bunları kendiniz test edin.
JavaScriptSerializer
veDataContractJsonSerializer
sınıfları tarafından sağlanan yerleşik destekten nasıl farklıdır ?