Я бы рекомендовал 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);
}
Документация: Serialize JSON to a file
Почему? Вот feature comparision between common serialisers as well as benchmark tests .
Ниже приведен график выполнения взяты из связанного статьи:
Это seperate post, утверждает, что:
Json.NET всегда была память эффективным, потоковое чтение и написав большие документы, а не загружая их полностью в память, но мне удалось найти пару ключевых мест, где можно было бы уменьшить выделение объектов ...... (сейчас) Json.Net (6.0) выделяет 8 раз меньше памяти, чем JavaScriptSerializer
.
Бенчмарки кажутся Json.Net 5, текущая версия (на момент написания статьи) 10. Какой версии стандартных .Net serialisers используемого не упоминаются
Этих тесты, очевидно, от разработчиков, которые поддерживают эту библиотеку. Я не подтвердил их претензии. Если сомневаетесь, проверьте их самостоятельно.
Как JSON.NET отличаются от встроенной поддержки, предоставляемой классами JavaScriptSerializer и DataContractJsonSerializer? –
@RobertHarvey Мне было проще в использовании и более надежным. Я считаю, что Microsoft соглашается, поскольку я думаю, что они планируют реализовать это в основной системе. Я также считаю, что это намного быстрее. Я видел какую-то статистику где-то, чтобы поддержать это, но у меня нет их в данный момент. – Liam
, и он лучше подходит к датам, http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx – Liam