winform4

json

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//导入json第三方库   使用nuget搜索   LitJson
using LitJson;
using System.IO;
namespace ZhiYou_winform_json解析14
{
     //json格式
    //[{"name":"zhangsan","age":18,"Name":"aaaa"},
    //{"name":"lisi","age":20,"Name":"aaaabb"}]
    /*
 json概念:是一种轻量级数据交互格式。
轻量级说明此种数据格式在网络传输的时候所占的带宽少,传输效率高。和xml相比较是比较轻量的。xml是一种老旧的数据交换格式。
json是目前市场最流行的一种数据交换格式。很多语言都支持它,如:js,java,c#等。
json格式文件特点:
1.以键值对(名值对)的形式存储数据。
如:"name":"value"。称name为键,value为值,也可称name为属性名称,value为属性值。
2.每一个键值对必须以英文逗号分割,但最后一个键值对除外。
3.属性值(value键值)如果是字符串类型必须是双引号包裹,不能使用单引号。属性值(vlaue键值)如果是数字、布尔不需要使用双引号包裹。
4.属性名称(key键)必须使用双引号包裹。
5.属性名称是区分大小写。
6. [] 代表数组  {}代表字典
              
              
    
    
                // 序列化:把一个对象转换成json字符串。
                // 反序列化:把一个json字符串转换成对象。
                // 反序列化要想成功,有一个关键点:对象的属性列表必须和json
                // 格式的字符串中的属性名称一一对应。
     
                 //为什么要序列和反序列化
                // 直接操作字符串需要借助字符串截取等相应的方法。
                // 编写代码麻烦,所以我们需要把json格式的字符串反序列化成对象。
                // 反序列化后,操作对象方便,访问对象的属性直接打点调用。

               
              
 */
    public partial class Form1 : Form
    {

        //反序列化2和序列化2 - 因为json文件为集合,所以新建一个集合
        List<Magic> magicList = new List<Magic>();
        public Form1()
        {
            InitializeComponent();
        }


        //反序列化1
        private void button1_Click(object sender, EventArgs e)
        {

            //反序列化json字符串
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(@"..\..\textjson.txt"));
            Console.WriteLine(jsonData);
            //使用foreach去遍历数组信息
            //temp也是jsondata类型的,但是temp是一个对象
            foreach (JsonData temp in jsonData)
            {
                //通过索引其去取得temp中的value
                //返回值还是jsondata类型
                JsonData idvalue = temp["id"];
                JsonData namevalue = temp["name"];
                JsonData numbervalue = temp["number"];

                //将jsondata转化为字符串进行输出
                //name本身就为str,所以不用转换
                int id = int.Parse(idvalue.ToString());
                int number = int.Parse(numbervalue.ToString());
                string nameStr = namevalue.ToString();
                //输出
                Console.WriteLine(id + ":" + nameStr + ":" + number);
            }

        }


        //序列化1
        private void button7_Click(object sender, EventArgs e)
        {

            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(@"..\..\textjson.txt"));

            //序列化json内容
            string ss = JsonMapper.ToJson(jsonData);
            Console.WriteLine(ss);
        }

        //反序列化2
        private void button2_Click(object sender, EventArgs e)
        {
            //依旧使用JsonMapper去进行解析
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(@"..\..\textjson.txt"));
            foreach (JsonData temp in jsonData)
            {


                //通过索引其去取得temp中的value
                //返回值还是jsondata类型
                JsonData idvalue = temp["id"];
                JsonData namevalue = temp["name"];
                JsonData numbervalue = temp["number"];

                //将jsondata转化为字符串进行输出
                //name本身就为str,所以不用转换
                int id = Int32.Parse(idvalue.ToString());
                int number = Int32.Parse(numbervalue.ToString());
                string stringStr = namevalue.ToString();


                // 创建一个新对象
                Magic magic = new Magic();

                magic.id = id;
                magic.number = number;
                magic.name = stringStr;

                //保存3个对象
                magicList.Add(magic);

            }


        }

        //序列化2
        private void button3_Click(object sender, EventArgs e)
        {
            //序列化json内容
            string ss = JsonMapper.ToJson(magicList);
            Console.WriteLine(ss);
        }


        //序列化3
        private void button5_Click(object sender, EventArgs e)
        {
            List<Student> listArray = new List<Student>();

            for (int i = 0; i < 5; i++)
            {
                Student student = new Student() { Name = "zhangsan" + i, Age = i + 10 };
               
                
                
                listArray.Add(student);
            }

            //序列化json
            string ss = JsonMapper.ToJson(listArray);
            Console.WriteLine(ss);
            //存入本地
            File.WriteAllText("tempJson.txt", ss);

        }

        //嵌套json解析
        private void button6_Click(object sender, EventArgs e)
        {
            IotDevice iotdevice = JsonMapper.ToObject<IotDevice>(File.ReadAllText(@"..\..\textjson2.txt"));
            Console.WriteLine(iotdevice);
            foreach (var temp in iotdevice.devicelist)
            {
                Console.WriteLine(temp);
            }

        }


    }


    //序列化2 数据模型类
    class Magic
    {
        public int id;

        public string name;

        public int number;

        public override string ToString()
        {
            return string.Format("id:{0},name:{1},numebr:{2}", id, name, number);
        }
    }

    //序列化3 数据模型类
    class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    //嵌套json解析 数据模型类
    public class DevicelistItem
    {
        public string productcode { get; set; }
        public string devicecode { get; set; }
        public string url { get; set; }

        public override string ToString()
        {
            return string.Format("productcode:{0},devicecode:{1},url:{2}", productcode, devicecode, url);
        }
    }

    public class IotDevice
    {
        public int status { get; set; }
        public string apiId { get; set; }
        public string date { get; set; }
        public string message { get; set; }
        public List<DevicelistItem> devicelist { get; set; }
        public override string ToString()
        {
            return string.Format("status:{0},apiId:{1},date:{2},message:{3},devicelist:{4},", status, apiId, date, message, devicelist);
        }


    }


    public class People
    {

        public int status { get; set; }
        public string apiId { get; set; }
        public string date { get; set; }
        public string message { get; set; }
        
        public List<Devicelist> devicelist { get; set; }

        public void aaa()
        {
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(@"..\..\textjson2.txt"));
         
            People people = new People();
          
            people.status = int.Parse(jsonData["status"].ToString());
            people.apiId = jsonData["apiId"].ToString();
            people.date = jsonData["date"].ToString();
            people.message = jsonData["message"].ToString();
            foreach (JsonData item in jsonData["devicelist"])
            {
                Devicelist devicelist = new Devicelist();
                devicelist.url = item["url"].ToString();
                devicelist.devicecode = item["devicecode"].ToString();
                devicelist.productcode = item["productcode"].ToString();
                people.devicelist.Add(devicelist);
            }

            Console.WriteLine(people.devicelist[0].url);

        }

        public class Devicelist
        {
            public string productcode { get; set; }
            public string devicecode { get; set; }
            public string url { get; set; }

        }
    }
}

MDI

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
/*MDI作用可以使 窗体包含窗体  并且对窗体进行排列等操作
 * 在项目中使用MDI窗体时,通常将一个MDI窗口窗体作为父窗体
 *父窗体可以将多个子窗体在容器中使用
 设置:属性中父窗体IsMDIContainer:true;*/
namespace zhiyou_winform_MDI
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //获取menuStrip中 选项
            Console.WriteLine(menuStrip1.Items[0]);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
        }

        private void 新建窗体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ChildForm1 childForm1 = new ChildForm1();
            
            //指定MDI子窗体的父窗体
            childForm1.MdiParent = this;
            childForm1.Show();
            //子窗体显示在0,0点
             childForm1.Location = new Point(0, 0);
        }


        /*
         排列MDI窗体

public void LayoutMdi(MdiLayout value)

value是MdiLayout的枚举值之一,用来定义MDI子窗体的布局。
Cascade    层叠排列MDI子窗体
TileHorizontal    水平平铺MDI子窗体
TileVertical    垂直平铺MDI子窗体     
         */
        private void 层叠排列ToolStripMenuItem_Click(object sender, EventArgs e)
        {


            LayoutMdi(MdiLayout.Cascade);
        }

        private void 水平平铺ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileHorizontal);
        }

        private void 垂直平铺ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileVertical);
        }
        
        //关闭父窗体
        private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
            
        }

        private void 查询MDI子窗体个数ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show(this.MdiChildren.Length.ToString());

            foreach (var item in MdiChildren)
            {
                Console.WriteLine(item);
            }
        }

        private void 关闭MDI子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form item in this.MdiChildren)
            {
                item.Close();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {

            foreach (Control item in this.Controls)
            {
                Console.WriteLine(item.Text);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {  
            //通过父窗体 找子窗体 的子控件
            foreach (Form item in this.MdiChildren)
            {
                foreach (Control item1 in item.Controls)
                {
                    if (item1 is Button)
                    {

                        item1.BackColor = Color.Red;
                    }
                    
                }
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.MdiChildren[0].Location = new Point(100, 100);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/45146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

断电的固态硬盘数据能放多久?

近日收到一个网友的提问&#xff0c;在这里粗浅表达一下见解&#xff1a; “网传固态硬盘断电后数据只能放一年&#xff0c;一年之后就会损坏。但是我有一个固态硬盘已经放了五六年了&#xff08;上次通电还是在2018年左右&#xff0c;我读初中的时候&#xff09;&#xff0c;…

《长相思》第二季回归:好剧质量,永恒的王牌

在万千剧迷的翘首以盼中&#xff0c;《长相思》第二季终于携着前作的辉煌与期待&#xff0c;缓缓拉开了序幕。这部自播出以来便以其精湛的剧情、出色的演员阵容以及独到的宣传策略&#xff0c;赢得了广泛好评与持续关注。如今&#xff0c;第二季的回归&#xff0c;无疑再次证明…

Linux 初识

目录 ​编辑 1.Linux发展史 1.1UNIX发展历史 1.2Linux发展历史 2.Linux的开源属性 2.1 开源软件的定义 2.2 Linux的开源许可证 2.3 开源社区与协作 3.Linux的企业应用现状 3.1 服务器 3.1.1 Web服务器 3.1.2 数据库服务器 3.1.3 文件服务器 3.1.4 电子邮件服务器 …

某客户管理系统Oracle RAC节点异常重启问题详细分析记录

一、故障概述 某日10:58分左右客户管理系统数据库节点1所有实例异常重启&#xff0c;重启后业务恢复正常。经过分析发现&#xff0c;此次实例异常重启的是数据库节点1。 二、故障原因分析 1、数据库日志分析 从节点1的数据库日志来看&#xff0c;10:58:49的时候数据库进程开始…

新火种AI|微软和苹果放弃OpenAI董事会观察员席位

作者&#xff1a;一号 编辑&#xff1a;美美 微软苹果双双不做OpenAI“观察员”&#xff0c;OpenAI能更自由吗&#xff1f; 7月10消息&#xff0c;微软当地时间周一宣布将放弃在OpenAI董事会的观察员席位&#xff0c;他们称&#xff0c;OpenAI在过去八个月中取得了“重大进展…

国内的几款强大的智能—AI语言模型

AI 绘图 链接&#xff1a;点我进入 1、国内百度研发的&#xff0c;文心一言&#xff1a; https://yiyan.baidu.com/welcome 大家如果像我的界面一样有【开始体验】就是可以使用的&#xff0c;否则就是说明在等待中&#xff01; 优点&#xff1a;会画画&#xff0c;暂无次数限…

回归树模型

目录 一、回归树模型vs决策树模型&#xff1a;二、回归树模型的叶结点&#xff1a;三、如何决定每个非叶结点上的特征类型&#xff1a; 本文只介绍回归树模型与决策树模型的区别。如需了解完整的理论&#xff0c;请看链接&#xff1a;决策树模型笔记 一、回归树模型vs决策树模…

Linux设备驱动的并发控制

一、概述 Linux设备驱动中必须解决的一个问题就是多个进程对共享资源(如全局变量、静态变量、硬件资源等)的并发访问&#xff0c;会导致竟态&#xff0c;如可能会出现以下情况&#xff1a;导致执行单元C独处的数据不符合预期 导致竟态发生有如下几种情况&#xff1a; 对称多处…

int类型变量表示范围的计算原理

文章目录 1. 了解2. 为什么通常情况下int类型整数的取值范围是-2147483648 ~ 21474836473. int类型究竟占几个字节4. 推荐 1. 了解 通常情况下int类型变量占4个字节&#xff0c;1个字节有8位&#xff0c;每位都有0和1两种状态&#xff0c;所以int类型变量一共可以表示 2^32 种状…

【全面介绍Oracle】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 目录 🎥前言🎥基本概念和安装🎥SQL语言🎥PL/SQL编程🎥数据库…

【计算机组成原理 | 第三篇】各个硬件的组成部分

前言&#xff1a; 在前面的文章中&#xff0c;我们介绍了计算机架构的基本组成。可以知道计算机的基本架构由“存储器”&#xff0c;“运算器”&#xff0c;“控制器”&#xff0c;“输入设备”&#xff0c;“输出设备”这五部分组成。 在这片文章中&#xff0c;我们来深入的了…

【斯坦福因果推断课程全集】2_无混淆和倾向分1

目录 Beyond a single randomized controlled trial Aggregating difference-in-means estimators Continuous X and the propensity score 随机试验的一个最简单的扩展是无约束下的干预效果估计。从定性上讲&#xff0c;当我们想估计一种并非随机的治疗效果&#xff0c;但一…

数列分块<2>

本期是数列分块入门<2>。该系列的所有题目来自hzwer在LOJ上提供的数列分块入门系列。 Blog:http://hzwer.com/8053.html sto hzwer orz %%% [转载] 好像上面的链接↑打不开&#xff0c;放一个转载:https://www.cnblogs.…

tensorflow卷积层操作

全连接NN&#xff1a; 每个神经元与前后相邻层的每一个神经元都有全连接关系。输入是特征&#xff0c;输出为预测结果。 参数个数(前层*后层后层&#xff09; 实际应用时&#xff0c;会先对原始图像进行特征提取&#xff0c;再把提取到的特征送给全连接网络 会先进行若干层提…

C嘎嘎类与对象上篇

类的定义 1. class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后⾯分号不能省略 。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。 2. C中struct也可以…

【C语言】C语言-学生籍贯信息记录系统(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

泛微e-cology getFileViewUrl接口存在SSRF漏洞复现 [附POC]

文章目录 泛微e-cology getFileViewUrl接口存在SSRF漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议泛微e-cology getFileViewUrl接口存在SSRF漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章…

【密码学】哈希函数与加密算法的关系

一、哈希函数的定义 哈希函数&#xff08;Hash Function&#xff09;&#xff0c;也被称为散列函数或杂凑函数&#xff0c; 是一种将任意长度的输入数据&#xff08;通常称为“预映射”或“消息”&#xff09;转换为固定长度输出&#xff08;通常称为“哈希值”、“散列值”、“…

PHP红包拓客微信小程序系统源码

&#x1f389;红包狂欢&#xff0c;客源滚滚来&#xff01;红包拓客微信小程序&#xff0c;营销新利器&#x1f680; &#x1f9e7;一、创意红包&#xff0c;吸引眼球 你还在为如何吸引顾客而烦恼吗&#xff1f;红包拓客微信小程序来帮你&#xff01;&#x1f381; 它以创意红…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(六)仿钉钉流程的转bpmn流程图

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、转bpmn流程图接口 /*** 转为bpmn xml格式* param processModel* throws IOException*/PostMapping("/ddtobpmnxml")public Result<?> ddToBpmnXml(RequestBody Proce…