C#實現(xiàn)Json文件讀寫的方法代碼
JSON是一種輕量級的數(shù)據(jù)交換格式。它基于 ECMAScript的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結構使得 JSON 成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網(wǎng)絡傳輸效率。
首先在項目中引用第三方庫:Newtonsoft.Json
編寫模型類,定義Json結構
//模型類,定義Json結構 public class BaseModel { public List<ModelData> list_groupA { get; set; } = new List<ModelData>(); public List<ModelData> list_groupB { get; set; } = new List<ModelData>(); public List<ModelData> list_groupC { get; set; } = new List<ModelData>(); } public class ModelData { public ModelData(int iD, int pointX, int pointY, string groupName) { ID = iD; PointX = pointX; PointY = pointY; GroupName = groupName; } public int ID { get; set; } public int PointX { get; set; } public int PointY { get; set; } public string GroupName { get; set; } }
序列化Json字符串,并保存文件
public void SaveToFile(string filePath) { if (filePath != "") { List<ModelData> list = new List<ModelData>(100); for (int i = 1; i <= 100; i++) { if (i < 50) { list.Add(new ModelData(i, 10, 10, "集合A")); } else if (i >= 50 && i < 75) { list.Add(new ModelData(i, 20, 20, "集合B")); } else { list.Add(new ModelData(i, 30, 30, "集合C")); } } BaseModel model = new BaseModel(); model.list_groupA = list.Where(x => x.GroupName == "集合A").ToList(); model.list_groupB = list.Where(x => x.GroupName == "集合B").ToList(); model.list_groupC = list.Where(x => x.GroupName == "集合C").ToList(); string json2 = JsonConvert.SerializeObject(model); WriteJsonFile(filePath, json2); } } /// <summary> /// 將序列化的json字符串內(nèi)容寫入Json文件,并且保存 /// </summary> /// <param name="path">路徑</param> /// <param name="jsonConents">Json內(nèi)容</param> public void WriteJsonFile(string path, string jsonConents) { try { File.WriteAllText(path, jsonConents, System.Text.Encoding.UTF8); MessageBox.Show("保存成功!"); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
如果不需要分組可將序列化對象改為list,即:
string json2 = JsonConvert.SerializeObject(list);
讀取文本字符串反序列化,獲取指定字段值
public void ReadJsonFile(string readFilePath) { if (File.Exists(readFilePath)) { //獲取文件內(nèi)容 string readString = File.ReadAllText(readFilePath); //反序列化:單組 /*JArray ja = (JArray)JsonConvert.DeserializeObject(readString); int jaCount = ja.Count; ja[0]["PinHight"].ToString();*/ //反序列化 JObject jo = JsonConvert.DeserializeObject<JObject>(readString); int joCount = jo.Count; //獲取指定位置值 int str = jo["list_groupA"][0].Value<int>("ID"); } }
讀取Json文件,更新字段
/// <summary> /// 更新字段 /// </summary> /// <param name="fileName"></param> public void UpdateJsonFile(string fileName) { string jsonString = File.ReadAllText(fileName, System.Text.Encoding.UTF8);//讀取文件 JObject jobject = JObject.Parse(jsonString);//解析成json jobject["list_student"][0]["ID"] = 111;//替換需要的文件 string convertString = Convert.ToString(jobject);//將json裝換為string File.WriteAllText(fileName, convertString, System.Text.Encoding.UTF8);//將內(nèi)容寫進jon文件中 }
總結
到此這篇關于C#實現(xiàn)Json文件讀寫的文章就介紹到這了,更多相關C# Json文件讀寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

C#中LINQ的Select與SelectMany函數(shù)使用