كتابة ملف C# json: دليل شامل
هذا الدليل يوضح طرقًا فعالة لكتابة بيانات JSON إلى الملفات في C#. يكمن التحدي في تنسيق البيانات بشكل صحيح في بناء جملة JSON صالح ، بما في ذلك الأقواس اللازمة.
نموذج البيانات:
public class DataItem
{
public int Id { get; set; }
public int SSN { get; set; }
public string Message { get; set; }
}
عينة من البيانات:
[
{
"Id": 1,
"SSN": 123,
"Message": "whatever"
},
{
"Id": 2,
"SSN": 125,
"Message": "whatever"
}
]
الحل باستخدام newtonsoft.json (موصى به):
يوفر Newtonsoft.json نهجًا فعالًا للغاية ، وتجنب التخزين المؤقت للسلسلة.
List dataItems = new List();
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);
}
الحل باستخدام System.text.json (.NET Core 3.0 وبعد ذلك):
System.text.json هي مكتبة مدمجة توفر وظائف مماثلة مع قدرات غير متزامنة.
using System.Text.Json;
List dataItems = new List();
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);
اختر الطريقة التي تناسب احتياجات مشروعك وإصدار .NET. من أجل الأداء الأمثل ، خاصة مع مجموعات البيانات الكبيرة ، يوصى بتسلسل دفق الملف المباشر (الطريقة 2 باستخدام Newtonsoft.json أو الطريقة غير المتزامنة باستخدام System.Text.json).
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3