Maison >développement back-end >C++ >Comment écrire efficacement des données JSON dans un fichier en C# ?

Comment écrire efficacement des données JSON dans un fichier en C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-18 01:27:08687parcourir

How to Efficiently Write JSON Data to a File in C#?

É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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn