首頁 > 後端開發 > C++ > 如何在C#中高效率地將JSON資料寫入檔案?

如何在C#中高效率地將JSON資料寫入檔案?

Barbara Streisand
發布: 2025-01-18 01:27:08
原創
686 人瀏覽過

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

C# JSON 檔案編寫:綜合指南

本指南詳細介紹了在 C# 中將 JSON 資料寫入檔案的有效方法。 挑戰在於以有效的 JSON 語法正確格式化數據,包括必要的括號。

資料模型:

<code class="language-csharp">public class DataItem
{
    public int Id { get; set; }
    public int SSN { get; set; }
    public string Message { get; set; }
}</code>
登入後複製

範例資料:

<code class="language-json">[
  {
    "Id": 1,
    "SSN": 123,
    "Message": "whatever"
  },
  {
    "Id": 2,
    "SSN": 125,
    "Message": "whatever"
  }
]</code>
登入後複製

使用 Newtonsoft.Json 的解決方案(建議):

Newtonsoft.Json 提供了一種高效的方法,避免了字串緩衝。

<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>
登入後複製

使用 System.Text.Json 的解決方案(.NET Core 3.0 及更高版本):

System.Text.Json 是一個內建函式庫,提供類似的功能和非同步功能。

<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>
登入後複製

選擇最適合您的專案需求和 .NET 版本的方法。 為了獲得最佳效能,特別是對於大型資料集,建議使用直接檔案流序列化(使用 Newtonsoft.Json 的方法 2 或使用 System.Text.Json 的非同步方法)。

以上是如何在C#中高效率地將JSON資料寫入檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板