Eu recomendaria o Json.Net , veja o exemplo abaixo:
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);
Ou a versão um pouco mais eficiente do código acima (não usa uma string como 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);
}
Documentation: Serialize JSON para um arquivo
Por quê? Aqui está uma comparação de recursos entre serialisadores comuns e testes de benchmark † ‡.
Abaixo está um gráfico de desempenho extraído do artigo vinculado:
Esta postagem em separado afirma que:
O Json.NET sempre foi eficiente em termos de memória, transmitindo a leitura e gravando documentos grandes em vez de carregá-los inteiramente na memória, mas consegui encontrar alguns locais importantes onde as alocações de objetos poderiam ser reduzidas ... (agora) O Json.Net (6.0) aloca 8 vezes menos memória que o JavaScriptSerializer ‡
Atualização desde o .Net Core 3.0
Um novo garoto no mercado desde que escreveu isso System.Text.Json
foi adicionado ao .Net Core 3.0. A Microsoft faz várias alegações de como isso é, agora, melhor que a Newtonsoft . Incluindo que é mais rápido que a Newtonsoft . como acima, aconselho você a testar isso sozinho ‡ .
† Os benchmarks parecem ser o Json.Net 5, a versão atual (por escrito) é 10. Qual versão dos serializadores padrão do .Net usados não é mencionada
‡ Esses testes são obviamente dos desenvolvedores que mantêm a biblioteca. Eu não verifiquei suas reivindicações . Em caso de dúvida, teste-os você mesmo.
JavaScriptSerializer
eDataContractJsonSerializer
?