Ich würde Json.Net empfehlen , siehe Beispiel unten:
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);
Oder die etwas effizientere Version des obigen Codes (verwendet keine Zeichenfolge als Puffer):
//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);
}
Dokumentation: Serialisieren Sie JSON in eine Datei
Warum? Hier ist ein Funktionsvergleich zwischen gängigen Serialisierern sowie Benchmark-Tests † ‡.
Unten finden Sie eine grafische Darstellung der Leistung aus dem verlinkten Artikel:
In diesem separaten Beitrag heißt es:
Json.NET war schon immer speichereffizient und hat das Lesen und Schreiben großer Dokumente gestreamt, anstatt sie vollständig in den Speicher zu laden. Ich konnte jedoch einige wichtige Stellen finden, an denen die Objektzuweisungen reduziert werden konnten ...... (jetzt) Json.Net (6.0) reserviert 8-mal weniger Speicher als JavaScriptSerializer ‡
Update seit .Net Core 3.0
Ein neues Kind auf dem Block seit dem Schreiben dieses System.Text.Json
Artikels wurde zu .Net Core 3.0 hinzugefügt. Microsoft macht mehrere Behauptungen, dass dies jetzt besser ist als Newtonsoft . Einschließlich, dass es schneller als Newtonsoft ist . Wie oben würde ich Ihnen raten, dies selbst zu testen ‡ .
† Benchmarks scheinen Json.Net 5 zu sein, die aktuelle Version (beim Schreiben) ist 10. Welche Version der verwendeten Standard-.Net-Serialisierer verwendet wird, wird nicht erwähnt
‡ Diese Tests stammen offensichtlich von den Entwicklern, die die Bibliothek verwalten. Ich habe ihre Behauptungen nicht überprüft . Im Zweifelsfall testen Sie sie selbst.
JavaScriptSerializer
undDataContractJsonSerializer
?