C# 实现Json文件读写

该文介绍了如何利用.NET框架中的Newtonsoft.Json库进行JSON操作,包括创建模型类定义JSON结构,对数据进行序列化保存到文件,以及从文件读取和反序列化数据,还涉及到数据的分组和字段更新操作。
摘要由CSDN通过智能技术生成

JSON是一种轻量级的数据交换格式。它基于 ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

首先在项目中引用第三方库: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字符串内容写入Json文件,并且保存
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="jsonConents">Json内容</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))
            {
                //获取文件内容
                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);//将内容写进jon文件中
        }
C#中,可以使用Json.NET库来读写JSON文件。首先,你需要在项目中引用Json.NET库。然后,你可以通过以下方法读取JSON文件和将数据写入JSON文件: 1. 读取JSON文件: - 首先,使用`File.Exists`方法检查文件是否存在。 - 然后,使用`File.ReadAllText`方法读取文件内容,并将其存储为一个字符串。 - 使用`JsonConvert.DeserializeObject<T>`方法将字符串反序列化为指定的类型(在这个例子中是`ReadJson`类)。 2. 将数据写入JSON文件: - 你可以创建一个用于存储数据的类(在这个例子中是`ReadJson`类)。 - 将数据赋值给该类的属性。 - 使用`JsonConvert.SerializeObject`方法将类对象序列化为JSON字符串。 - 使用`File.WriteAllText`方法将JSON字符串写入文件。 以下是一个示例代码,展示了如何读取和写入JSON文件: ```csharp // 读取JSON文件 private void ReadJsonFile(string fileName) { if (File.Exists(fileName)) { string json = File.ReadAllText(fileName); ReadJson data = JsonConvert.DeserializeObject<ReadJson>(json); // 对读取到的数据进行操作 // 这里是将数据展示在listBox1中 listBox1.Items.Add(AppDomain.CurrentDomain.BaseDirectory); this.y1_value = data.y1_value; this.y2_value = data.y2_value; this.y3_value = data.y3_value; this.y4_value = data.y4_value; this.y5_value = data.y5_value; this.y6_value = data.y6_value; this.y7_value = data.y7_value; this.y8_value = data.y8_value; this.y9_value = data.y9_value; List<List<int>> yValues = new List<List<int>>() { y1_value, y2_value, y3_value, y4_value, y5_value, y6_value, y7_value, y8_value, y9_value }; for (int i = 0; i < yValues.Count; i++) { string prefix = $"y{i + 1}"; string line = string.Join(" ", yValues[i]); listBox1.Items.Add($"{prefix}: {line}"); } } } // 写入JSON文件 private void WriteJsonFile(string fileName) { ReadJson data = new ReadJson() { y1_value = new List<int>() { 1, 2, 3 }, y2_value = new List<int>() { 4, 5, 6 }, y3_value = new List<int>() { 7, 8, 9 }, // 其他数据... }; string json = JsonConvert.SerializeObject(data); File.WriteAllText(fileName, json); } ``` 请注意,你需要根据自己的需求调整代码中的类和属性名称。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值