C#实现Json文件读写的方法代码

 更新时间:2023年11月27日 15:21:42   作者:KsirZz  
这篇文章主要给大家介绍了关于C#实现Json文件读写的相关资料,C# 读取JSON文件并读取某一个关键字的值可以使用Newtonsoft.Json库,文中通过代码介绍的非常详细,需要的朋友可以参考下

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文件读写的文章就介绍到这了,更多相关C# Json文件读写内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#进行PDF表单域的创建填写与删除操作

    C#进行PDF表单域的创建填写与删除操作

    通常情况下,PDF文件是不可编辑的,但PDF表单提供了一些可编辑区域,允许用户填写和提交信息,本文主要介绍了如何使用C#实现PDF表单域的创建,填写与删除操作,感兴趣的可以了解下
    2024-04-04
  • C#中DateTime函数的详细用法

    C#中DateTime函数的详细用法

    这篇文章介绍了C#中DateTime函数的详细用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#实现的Win32控制台线程计时器功能示例

    C#实现的Win32控制台线程计时器功能示例

    这篇文章主要介绍了C#实现的Win32控制台线程计时器功能,结合实例形式分析了C#基于控制台的时间操作相关技巧,需要的朋友可以参考下
    2016-08-08
  • WPF实现雷达图(仿英雄联盟)的示例代码

    WPF实现雷达图(仿英雄联盟)的示例代码

    这篇文章主要介绍了如何利用WPF实现雷达图(仿英雄联盟)的绘制,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-07-07
  • C#实现字体旋转的方法

    C#实现字体旋转的方法

    这篇文章主要介绍了C#实现字体旋转的方法,涉及C#通过Matrix实现字体旋转效果的方法,需要的朋友可以参考下
    2015-06-06
  • asp.net获取系统当前时间的方法详解

    asp.net获取系统当前时间的方法详解

    这篇文章主要介绍了asp.net获取系统当前时间的方法,较为详细的分析了C#日期与时间操作所涉及的相关函数与使用技巧,需要的朋友可以参考下
    2016-06-06
  • c++ STL之list对结构体的增加,删除,排序等操作详解

    c++ STL之list对结构体的增加,删除,排序等操作详解

    这篇文章主要介绍了c++ STL之list对结构体的增加,删除,排序等操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • c#使用file.copy实现文件备份示例

    c#使用file.copy实现文件备份示例

    需要把D盘Source文件夹中的所有名称包含"LTE"的子文件夹Copy到E盘的Backup文件中,实现特定文件夹每天备份,下面使用file.copy实现一下这个功能
    2014-03-03
  • C#事件(event)使用方法详解

    C#事件(event)使用方法详解

    本文给大家介绍了在C#中,事件(event)的概念和使用方法,文章适合一些初学者学习,主要讲解了一些概念和一些代码案例。
    2018-01-01
  • List<>中Find的用法小结

    List<>中Find的用法小结

    本篇文章主要是对List<>中Find的用法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01

最新评论