Newtonsoft.Json使用,C# Json文件读取,写入

2023-05-16

 用学校作为例子,有学校名称,学校下面有班级,班级有名字,班级下面有学生,这里面有数组,有字段

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JsonDemo
{
    public class School
    {
        public string SchoolName { get; set; }
        public List<Grade> Grades { get; set; } =  new List<Grade>();

    }

    public class Grade
    {
        public string GradeName { get; set; }
        public List<Student> Students { get; set; } = new List<Student>();
    }

    public class Student
    {
        public string StudentName { get; set; }
    }
}

主程序 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JsonDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            School school = new School();
            school.SchoolName = "某某某小学";

            Grade grade1 = new Grade();
            grade1.GradeName = "1班";

            Student student = new Student();
            student.StudentName = "小张";
            grade1.Students.Add(student);

            Grade grade2 = new Grade();
            grade2.GradeName = "2班";
            Grade grade3 = new Grade();
            grade3.GradeName = "3班";

            school.Grades.Add(grade1);
            school.Grades.Add(grade2);
            school.Grades.Add(grade3);

            ParameterByJson parameterByJson = new ParameterByJson();

            string jsonText1 = parameterByJson.SchoolToText(school);

            School school1 = parameterByJson.TextToSchool(jsonText1);

            parameterByJson.WriteText("test.json", jsonText1);

            string jsonText2 = parameterByJson.ReadFileText("test.json");

            School school2 = parameterByJson.TextToSchool(jsonText2);
        }
    }
}

Json类,包含了json数组的生成和转换

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JsonDemo
{
    public class ParameterByJson
    {
        /// <summary>
        /// 读取JSON
        /// </summary>
        private JObject ReadStringJson(string json)
        {
            JObject jObject = (JObject)JsonConvert.DeserializeObject(json);
            return jObject;
        }

        /// <summary>
        /// 读取JSON文件
        /// </summary>
        private JObject ReadFileJson(string jsonFile)
        {
            try
            {
                using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))
                {
                    using (JsonTextReader reader = new JsonTextReader(file))
                    {
                        JObject jObject = (JObject)JToken.ReadFrom(reader);
                        return jObject;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
        }

        public string ReadFileText(string jsonFile)
        {
            try
            {
                string text = "";
                using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))
                {
                    text = file.ReadToEnd();
                }
                return text;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
        }

        /// <summary>
        /// 写入JSON文件
        /// </summary>
        /// <param name="jsonFile"></param>
        /// <param name="jObject"></param>
        private void WriteJson(string jsonFile, JObject jObject)
        {
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(jsonFile))
            {
                file.Write(jObject.ToString());
            }
        }

        /// <summary>
        /// 写入JSON文件
        /// </summary>
        /// <param name="jsonFile"></param>
        /// <param name="jObject"></param>
        public void WriteText(string jsonFile, string jsonStr)
        {
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(jsonFile))
            {
                file.Write(jsonStr);
            }
        }

        /// <summary>
        /// 效验文件夹,没有就创建
        /// </summary>
        private void DirectoryCheak(string path)
        {
            if (false == System.IO.Directory.Exists(path))
            {
                System.IO.Directory.CreateDirectory(path);
            }
        }

        public string SchoolToText(School school)
        {
            try
            {
                //设定小驼峰模式,属性名首字母小写
                var setting = new JsonSerializerSettings
                {
                    ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
                };

                return JsonConvert.SerializeObject(school, setting);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
        }

        public string SchoolToTextComplex(School school)
        {
            try
            {
                JObject jObject = new JObject();
                jObject.Add("school", new JObject());
                JObject jObjectSchool = (JObject)jObject["school"];
                jObjectSchool.Add("schoolName", new JObject());
                jObjectSchool["schoolName"] = school.SchoolName;
                jObjectSchool.Add("grades", new JArray());
                JArray JArrayGrades = (JArray)jObjectSchool["grades"];

                for (int i = 0; i < school.Grades.Count; i++)
                {
                    JObject jObjectGrade = new JObject();
                    jObjectGrade.Add("gradeName", new JObject());
                    JObject jObjectGradeName = (JObject)jObjectGrade["gradeName"];
                    JArrayGrades.Add(jObjectGrade);
                }
                //太复杂了,省略了

                return JsonConvert.SerializeObject(jObject);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
        }

        public School TextToSchool(string jsonText)
        {
            try
            {
                if (!String.IsNullOrEmpty(jsonText))
                {
                    //设定小驼峰模式,属性名首字母小写
                    var setting = new JsonSerializerSettings
                    {
                        ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
                    };
                    return JsonConvert.DeserializeObject<School>(jsonText, setting);
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
        }

        public School TextToSchoolComplex(string jsonText)
        {
            try
            {
                if (!String.IsNullOrEmpty(jsonText))
                {
                    JObject jObject = (JObject)JsonConvert.DeserializeObject(jsonText);
                    School school = new School();
                    school.SchoolName = jObject["school"].ToString();

                    JArray items = JArray.Parse(jObject["grades"].ToString());
                    List<Grade> grades = new List<Grade>();
                    foreach (var item in items)
                    {
                        JObject itmeTemp = JObject.Parse(item.ToString());
                        Grade grade = new Grade();
                        grade.GradeName = itmeTemp["gradeName"].ToString();
                        grades.Add(grade);
                    }

                    school.Grades = grades;
                    //省略一部分,太麻烦了
                    return school;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
        }
    }
}

Demo地址

https://download.csdn.net/download/g313105910/16346139

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Newtonsoft.Json使用,C# Json文件读取,写入 的相关文章

随机推荐

  • 检测链表中是否存在回环(Java 版)

    检测链表中是否存在回环 xff0c 这里介绍两种方法 xff1a 快慢指针 xff1b HashSet 存储原理 xff1b 1 快慢指针 快慢指针检查 xff0c 就是定义两个指针 xff0c 一个走的快 xff0c 一个走的慢 xff0
  • 通过http接口进行批量post操作(json格式)

    通过 64 Test或者main方法来进行 相关依赖 poi lt dependency gt lt groupId gt org apache poi lt groupId gt lt artifactId gt poi lt artif
  • spring容器初始化bean后执行方法

    有时 xff0c 我们需要在启动bean时初始化bean属性 xff0c 例如读取perporties文件 xff0c 对属性进行赋值 xff1b 启动容器时让某个method方法执行等等 这时需要在进行配置 xff0c 让bean在注入时
  • 4个简单有效的网页视频下载方法,超级简单好用

    有很多网站的视频是没有下载功能的 xff0c 想要下载视频怎么办呢 xff1f 今天就分享给大家4个简单有效的网页视频下载方法 xff0c 多个平台都适用 xff0c 而且操作简单 xff0c 一看就会 xff01 一 审查元素下载 一个简
  • iptables详解

    5链 INPUT OUTPUT PREROUTING FORWARD POSTROUTING INPUT OUTPUT gt PREROUTING gt 是否为本机 gt FORWARD gt POSTROUTING gt 其他主机 所以
  • 浅谈一致性哈希算法 consistent hashing

    接触过分布式的小伙伴一定对一致性哈希算法这个词语不陌生 xff0c 那么到底什么是一致性哈希算法呢 xff1f 了解一致性哈希算法之前我们先了解下哈希取模 假设我们有三台服务器 xff0c 缓存3万张图片 当然我们可以均匀的分配到每个服务器
  • ubuntu20.04启用SSH

    新安装的ubuntu20 04默认是没有开启ssh的 xff0c 所以无法使用ssh登录系统 1 安装openssh server span class token function sudo span span class token f
  • 密码生成器

    import random def Range get num alist listout 61 while num gt 0 listout append alist random randint 0 len alist 1 num 61
  • centos7安装oracle中遇到的常见问题解决方法

    1 安装图形界面 yum y install gnome 2 安装vnc server yum y install vnc server vncpasswd 设置密码 vncserver启动vnc windows安装vnc客户端客户端 通过
  • java中keytool生成的jks证书转换为openssl格式证书

    一 通常jks文件包含了服务器的私钥 server key xff0c 服务器证书 server crt 根证书 ca crt 二 通过java的keytool工具导出成 PKCS12 格式文件 my p12 keytool importk
  • IBMX3650M4安装win2008Server操作指南

    IBMX3650M4安装win2008Server操作指南 由于IBM服务器是IBM原有的Linux系统 xff0c 所以需要在此硬件上安装Win 2008 Server系统 xff08 以下简称win8 xff09 xff0c 中间遇到了
  • windows远程桌面连接到服务器黑屏问题

    任务管理器使用组合键 Ctrl 43 Alt 43 End xff0c 于是打开了远程电脑的任务管理器 xff0c 取消 xff0c 即可返回桌面正常显示
  • p2p数据分析

    大数据在许多国家具有战略意义 xff0c 其原因不仅在少数巨头公司的应用 xff0c 而是大 中 小 微企业乃至个人 xff0c 都能利用大数据来创造新的价值 而互联网本身就是一个大数据的金矿 xff0c 利用它创造价值 xff0c 是时代
  • 关于The GPG keys listed for the "***" repository are already installed but they are not corret

    这个问题是在自己制作的repo源码库的时候出现的 xff0c 从字面上理解 xff0c 是 为 源码仓库出示的GPG密钥已经安装 xff0c 但不正确 首先 xff0c GPG密钥存在的目的是处于安全和规范考虑 xff0c RedHat在发
  • __stack_chk_fail问题分析

    一 问题 进程收到SIGABRT 信号异常退出 xff0c 异常调用栈显示 stack chk fail Build fingerprint 39 Pico A7H10 PICOA7H10 10 5 5 0 smartcm 16769120
  • 十套精美个人博客网站模板

    文件资源 点击下载 展示在下方 xff0c 点击你想下载的文件 xff0c 然后点击普通下载就能下载了 紫色的图片博客个人页面模板 红色的微博社交平台HTML模板 响应式生活博客设计网站HTML5模板 程序员个人博客模板 响应式的互联网IT
  • 高性能无锁环形队列 Disruptor

    Disruptor 环形队列 JLog 秒级百G级日志搜集 传输 存储解决方案 高性能无锁队列 Disruptor 高性能队列 Disruptor 使用教程 高性能队列Disruptor框架的详细说明与实战使用 SpringBoot 并发框
  • ubuntu20.04更换阿里的软件源

    新安装的ubuntu20 04的软件源是使用的国外的源 xff0c 因此在使用apt安装软件时速度并不怎么快 xff0c 建议大家更换为国内的源 xff0c 这样在使用apt安装软件时速度会有明显的提升的 ubuntu20 04 apt的配
  • mpi运行窗口无反应或者闪退

    原因有三 1 xff0c 服务未启动 2 xff0c 系统防火墙拦截
  • Newtonsoft.Json使用,C# Json文件读取,写入

    用学校作为例子 xff0c 有学校名称 xff0c 学校下面有班级 xff0c 班级有名字 xff0c 班级下面有学生 xff0c 这里面有数组 xff0c 有字段 using System using System Collections