Écriture de fichiers C# JSON : un guide complet
Ce guide détaille les méthodes efficaces pour écrire des données JSON dans des fichiers en C#. Le défi réside dans le formatage correct des données dans une syntaxe JSON valide, y compris les parenthèses nécessaires.
Modèle de données :
<code class="language-csharp">public class DataItem { public int Id { get; set; } public int SSN { get; set; } public string Message { get; set; } }</code>
Exemples de données :
<code class="language-json">[ { "Id": 1, "SSN": 123, "Message": "whatever" }, { "Id": 2, "SSN": 125, "Message": "whatever" } ]</code>
Solution utilisant Newtonsoft.Json (Recommandé) :
Newtonsoft.Json propose une approche très efficace, évitant la mise en mémoire tampon des chaînes.
<code class="language-csharp">List<DataItem> dataItems = new List<DataItem>(); dataItems.Add(new DataItem { Id = 1, SSN = 2, Message = "A Message" }); // Method 1: Serialize to string, then write to file string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(dataItems.ToArray()); System.IO.File.WriteAllText(@"D:\path.txt", jsonString); // Method 2: Direct serialization to file stream (more efficient) using (StreamWriter file = File.CreateText(@"D:\path2.txt")) { Newtonsoft.Json.JsonSerializer serializer = new Newtonsoft.Json.JsonSerializer(); serializer.Serialize(file, dataItems); }</code>
Solution utilisant System.Text.Json (.NET Core 3.0 et versions ultérieures) :
System.Text.Json est une bibliothèque intégrée offrant des fonctionnalités similaires avec des capacités asynchrones.
<code class="language-csharp">using System.Text.Json; List<DataItem> dataItems = new List<DataItem>(); dataItems.Add(new DataItem { Id = 1, SSN = 2, Message = "A Message" }); // Synchronous method string jsonString = JsonSerializer.Serialize(dataItems); File.WriteAllText(@"D:\path.json", jsonString); // Asynchronous method await using FileStream createStream = File.Create(@"D:\pathAsync.json"); await JsonSerializer.SerializeAsync(createStream, dataItems);</code>
Choisissez la méthode qui correspond le mieux aux besoins de votre projet et à la version .NET. Pour des performances optimales, en particulier avec de grands ensembles de données, la sérialisation directe du flux de fichiers (méthode 2 utilisant Newtonsoft.Json ou méthode asynchrone utilisant System.Text.Json) est recommandée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!