Saya akan merekomendasikan Json.Net , lihat contoh di bawah ini:
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);
Atau versi yang sedikit lebih efisien dari kode di atas (tidak menggunakan string sebagai buffer):
//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);
}
Dokumentasi: Serialisasi JSON ke file
Mengapa? Berikut ini adalah perbandingan fitur antara serialiser umum serta tes benchmark † ‡.
Di bawah ini adalah grafik kinerja yang diambil dari artikel yang ditautkan:
Pos terpisah ini menyatakan bahwa:
Json.NET selalu efisien dalam memori, mengalirkan membaca dan menulis dokumen besar daripada memuatnya seluruhnya ke dalam memori, tetapi saya dapat menemukan beberapa tempat utama di mana alokasi objek dapat dikurangi ...... (sekarang) Json.Net (6.0) mengalokasikan 8 kali lebih sedikit memori daripada JavaScriptSerializer ‡
Pembaruan sejak .Net Core 3.0
Seorang anak baru di blok sejak menulis ini adalah System.Text.Json
yang telah ditambahkan ke .Net Core 3.0. Microsoft membuat beberapa klaim tentang bagaimana ini, sekarang, lebih baik daripada Newtonsoft . Termasuk itu lebih cepat dari Newtonsoft . seperti di atas, saya akan menyarankan Anda untuk menguji ini sendiri ‡ .
† Tingkatan yang dicapai adalah Json.Net 5, versi saat ini (saat menulis) adalah 10. Versi standar apa yang digunakan oleh serialisNet.
‡ Tes ini jelas dari pengembang yang mengelola perpustakaan. Saya belum memverifikasi klaim mereka . Jika ragu, cobalah sendiri.
JavaScriptSerializer
danDataContractJsonSerializer
kelas?Contoh dalam jawaban Liam menyimpan file sebagai string dalam satu baris. Saya lebih suka menambahkan pemformatan. Seseorang di masa depan mungkin ingin mengubah beberapa nilai secara manual dalam file. Jika Anda menambahkan pemformatan, lebih mudah melakukannya.
Berikut ini menambahkan indentasi JSON dasar:
sumber
Ada fungsionalitas bawaan untuk ini menggunakan Kelas JavaScriptSerializer :
sumber
sumber