Я рекомендую Json.Net , див. Приклад нижче:
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);
Або трохи ефективніша версія вищевказаного коду (не використовує рядок як буфер):
//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);
}
Документація: серіалізувати JSON у файл
Чому? Ось порівняння особливостей між звичайними серіалізаторами, а також тестовими показниками † ‡.
Нижче наведено графік ефективності, взятий із пов'язаної статті:
У цьому окремому дописі зазначено, що:
Json.NET завжди був ефективним у пам’яті, використовуючи потокове читання та запис великих документів, а не завантажуючи їх цілком у пам’ять, але мені вдалося знайти пару ключових місць, де можна було б зменшити розміщення об’єктів ...... (зараз) Json.Net (6.0) виділяє у 8 разів менше пам'яті, ніж JavaScriptSerializer ‡
Оновлення з .Net Core 3.0
Нова дитина в блоці з моменту написання цього, System.Text.Json
що було додано до. Net Core 3.0. Microsoft висловлює кілька претензій на те, як це зараз краще, ніж Newtonsoft . У тому числі, що він швидший, ніж Newtonsoft . як зазначено вище, я б радив вам перевірити це самостійно ‡ .
† Орієнтовні показники виглядають як Json.Net 5, поточна версія (у письмовій формі) - 10. Яка версія стандартних серіалізаторів .Net використовується не згадується
‡ Ці тести очевидно від розробників, які підтримують бібліотеку. Я не підтвердив їхні претензії . Якщо ви сумніваєтесь, протестуйте їх самостійно.
JavaScriptSerializer
таDataContractJsonSerializer
?