Ответ 1
Я бы порекомендовал 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 в файл
Почему? Здесь сравнение функций между обычными сериализаторами, а также тесты производительности & # 134; & # 135 ;.
Ниже приведен график производительности, взятый из связанной статьи:
В этом отдельном сообщении говорится, что:
Json.NET всегда эффективно занимал память, обеспечивая потоковое чтение и запись больших документов, а не загружая их полностью в память, но мне удалось найти пару ключевых мест, где можно было бы сократить выделение объектов...... (сейчас) Json.Net(6.0) выделяет в 8 раз меньше памяти, чем JavaScriptSerializer
& # 135 ;.
Benchmarks appear to be Json.Net 5, the current version (on writing) is 10. What version of standard .Net serialisers used is not mentioned
These tests are obviously from the developers who maintian the library. I have not verified their claims. If in doubt test them yourself.