欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)Json文件讀寫(xiě)的方法代碼

 更新時(shí)間:2023年11月27日 15:21:42   作者:KsirZz  
這篇文章主要給大家介紹了關(guān)于C#實(shí)現(xiàn)Json文件讀寫(xiě)的相關(guān)資料,C# 讀取JSON文件并讀取某一個(gè)關(guān)鍵字的值可以使用Newtonsoft.Json庫(kù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

JSON是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于 ECMAScript的一個(gè)子集,采用完全獨(dú)立于編程語(yǔ)言的文本格式來(lái)存儲(chǔ)和表示數(shù)據(jù)。簡(jiǎn)潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語(yǔ)言。 易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。

首先在項(xiàng)目中引用第三方庫(kù):Newtonsoft.Json

編寫(xiě)模型類,定義Json結(jié)構(gòu)

//模型類,定義Json結(jié)構(gòu)
    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)容寫(xiě)入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);
            }
        }

如果不需要分組可將序列化對(duì)象改為list,即:

string json2 = JsonConvert.SerializeObject(list);

讀取文本字符串反序列化,獲取指定字段值

public void ReadJsonFile(string readFilePath)
        {
            if (File.Exists(readFilePath))
            {
                //獲取文件內(nèi)容
                string readString = File.ReadAllText(readFilePath);
                //反序列化:?jiǎn)谓M
                /*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)容寫(xiě)進(jìn)jon文件中
        }

總結(jié) 

到此這篇關(guān)于C#實(shí)現(xiàn)Json文件讀寫(xiě)的文章就介紹到這了,更多相關(guān)C# Json文件讀寫(xiě)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# Record關(guān)鍵字示例詳解

    C# Record關(guān)鍵字示例詳解

    C#9.0引入record關(guān)鍵字,用于定義不可變且專注于數(shù)據(jù)表示的記錄類型,記錄類型自動(dòng)生成構(gòu)造函數(shù)、ToString、Equals和GetHashCode方法,并支持不可變性和可變性,適用于數(shù)據(jù)傳輸對(duì)象、不可變數(shù)據(jù)結(jié)構(gòu)和配置對(duì)象等場(chǎng)景,本文介紹C# Record關(guān)鍵字,感興趣的朋友一起看看吧
    2025-01-01
  • C# 中用 Sqlparameter 的兩種用法

    C# 中用 Sqlparameter 的兩種用法

    這篇文章主要介紹了C# 中用 Sqlparameter 的幾種用法,文中給大家列舉了兩種用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • C#連接MySql數(shù)據(jù)庫(kù)的方法

    C#連接MySql數(shù)據(jù)庫(kù)的方法

    最近兩天在解決C#連接MySql數(shù)據(jù)庫(kù)的問(wèn)題,通過(guò)不同的從網(wǎng)上學(xué)習(xí),最終找到了解決的辦法,現(xiàn)在和大家分享一下
    2013-10-10
  • C#實(shí)現(xiàn)對(duì)文件進(jìn)行加密保護(hù)的示例代碼

    C#實(shí)現(xiàn)對(duì)文件進(jìn)行加密保護(hù)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)對(duì)文件進(jìn)行加密保護(hù)的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#中LINQ的Select與SelectMany函數(shù)使用

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

    這篇文章主要介紹了C#中LINQ的Select與SelectMany函數(shù)使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • c# EnumHelper枚舉常用操作類

    c# EnumHelper枚舉常用操作類

    在項(xiàng)目中需要把枚舉填充到下拉框中,所以使用統(tǒng)一的方法實(shí)現(xiàn),測(cè)試代碼如下,需要的朋友可以參考下
    2016-11-11
  • C#枚舉類型和結(jié)構(gòu)體詳解

    C#枚舉類型和結(jié)構(gòu)體詳解

    這篇文章主要為大家詳細(xì)介紹了C#枚舉類型和結(jié)構(gòu)體,,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#使用CefSharp自定義緩存實(shí)現(xiàn)

    C#使用CefSharp自定義緩存實(shí)現(xiàn)

    本文介紹了如何使用C#和CefSharp自定義緩存實(shí)現(xiàn)減少Web應(yīng)用程序的網(wǎng)絡(luò)請(qǐng)求,提高應(yīng)用程序性能。首先,本文講解了CefSharp的基本知識(shí)和使用方法。然后,詳細(xì)闡述了在CefSharp中實(shí)現(xiàn)自定義緩存的步驟和技巧。最后,通過(guò)實(shí)例演示了如何使用自定義緩存功能獲取并展示網(wǎng)頁(yè)數(shù)據(jù)
    2023-04-04
  • 最新評(píng)論