jsonusing 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搜索 LitJsonusing LitJson;using System.IO;namespace ZhiYou_winform_json解析14{json概念是一种轻量级数据交互格式。轻量级说明此种数据格式在网络传输的时候所占的带宽少传输效率高json是目前市场最流行的一种数据交换格式。很多语言都支持它如js,java,c#等。json格式文件特点1.以键值对的形式存储数据。如name:value。称name为键value为值也可称name为属性名称value为属性值。2.每一个键值对必须以英文逗号分割但最后一个键值对除外。3.属性值value键值如果是字符串类型必须是双引号包裹不能使用单引号。属性值vlaue键值如果是数字、布尔也需要使用双引号包裹。4.属性名称是区分大小写。5. [] 代表数组 {}代表字典//json格式//6. JSON在线解析格式化 - JSON.fans7.序列化把一个对象转换成json字符串。 存数据反序列化把一个json字符串转换成对象。 取数据反序列化要想成功有一个关键点对象的属性列表必须和json格式的字符串中的属性名称一一对应。8.为什么要序列和反序列化直接操作字符串需要借助字符串截取等相应的方法。编写代码麻烦所以我们需要把json格式的字符串反序列化成对象。反序列化后操作对象方便访问对象的属性直接打点调用。9. 如何序列化和反序列化使用nuget搜索 LitJson 完成json数据解析*///不使用数据模型序列化和反序列化private void button1_Click(object sender, EventArgs e){//json字符串// 将json字符串转换成对象 反序列ToObjectJsonData jsonData JsonMapper.ToObject(File.ReadAllText(1.txt));// [{name:张三,age:18},{name:李四,age:20}]foreach (JsonData item in jsonData){Console.WriteLine(item[name]);Console.WriteLine(item[age]);}//修改数据jsonData[0][name] 王五;//序列化成json字符串// 序列化ToJsonstring json JsonMapper.ToJson(jsonData);Console.WriteLine(json);//IO 操作 存入字符串File.WriteAllText(1.txt, json);}//使用数据模型序列化private void button2_Click(object sender, EventArgs e){Person person new Person() { Name 张三, Age 18, Height 180f };Person person1 new Person() { Name 张三1, Age 19, Height 181f };Person person2 new Person() { Name 张三2, Age 29, Height 191f };//序列化json数据string personJsonStr JsonMapper.ToJson(person);Console.WriteLine(personJsonStr); //{Name:\u5F20\u4E09,Age:18,Height:180}//三个对象转jsonListPerson list new ListPerson();list.Add(person);list.Add(person1);list.Add(person2);string listJsonStr JsonMapper.ToJson(list);Console.WriteLine(listJsonStr);try{//IO 操作 存入字符串File.WriteAllText(2.txt, listJsonStr);}catch (Exception ex){Console.WriteLine(ex.Message);}//存入本地File.WriteAllText(2.txt, listJsonStr);}//使用数据模型反序列化private void button3_Click(object sender, EventArgs e){//方式1//JsonData jsonData JsonMapper.ToObject(File.ReadAllText(2.txt));//ListPerson list new ListPerson();//foreach (JsonData item in jsonData)//{// Person person new Person();// person.Name item[Name].ToString();// person.Age int.Parse(item[Age].ToString());// person.Height float.Parse(item[Height].ToString());// list.Add(person);//}//方式2ListPerson list JsonMapper.ToObjectListPerson(File.ReadAllText(2.txt));foreach (Person p in list){Console.WriteLine(p.Name);Console.WriteLine(p.Age);Console.WriteLine(p.Height);}}//使用数据模型嵌套序列化private void button4_Click(object sender, EventArgs e){People people new People() { Name 张三, Age 18};people.EmployeesList.Add(new Employee() { Position 视觉工程师, EmployeeId 1, CompanyName 微软 });People people1 new People() { Name 张三1, Age 19 };people1.EmployeesList.Add(new Employee() { Position 视觉工程师1, EmployeeId 11, CompanyName 微软1 });ListPeople list new ListPeople();list.Add(people);list.Add(people1);string listJsonStr JsonMapper.ToJson(list);Console.WriteLine(listJsonStr);//IO 操作 存入字符串File.WriteAllText(3.txt, listJsonStr);}//使用数据模型嵌套反序列化private void button5_Click(object sender, EventArgs e){ListPeople list JsonMapper.ToObjectListPeople(File.ReadAllText(3.txt));foreach (People p in list){Console.WriteLine(p.Name);Console.WriteLine(p.Age);foreach (Employee item in p.EmployeesList){Console.WriteLine(item.Position);Console.WriteLine(item.CompanyName);Console.WriteLine(item.EmployeeId);}}}/数据模型类 model 类public class Person{public string Name { get; set; }public int Age { get; set; }public float Height { get; set; }}public class People{public string Name { get; set; }public int Age { get; set; }//员工类集合 用于后续json数据嵌套public ListEmployee EmployeesList { get; set; } new ListEmployee();}//数据模型3 用于嵌套People类public class Employee{//职位public string Position { get; set; }//员工编号public int EmployeeId { get; set; }//公司名称public string CompanyName { get; set; }}MDIusing 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);}}}管理MDI子窗体foreach (Control item in MdiChildren){if (item is Form7){item.BackColor Color.Red;}}
winform4
发布时间:2026/5/28 4:56:22
jsonusing 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搜索 LitJsonusing LitJson;using System.IO;namespace ZhiYou_winform_json解析14{json概念是一种轻量级数据交互格式。轻量级说明此种数据格式在网络传输的时候所占的带宽少传输效率高json是目前市场最流行的一种数据交换格式。很多语言都支持它如js,java,c#等。json格式文件特点1.以键值对的形式存储数据。如name:value。称name为键value为值也可称name为属性名称value为属性值。2.每一个键值对必须以英文逗号分割但最后一个键值对除外。3.属性值value键值如果是字符串类型必须是双引号包裹不能使用单引号。属性值vlaue键值如果是数字、布尔也需要使用双引号包裹。4.属性名称是区分大小写。5. [] 代表数组 {}代表字典//json格式//6. JSON在线解析格式化 - JSON.fans7.序列化把一个对象转换成json字符串。 存数据反序列化把一个json字符串转换成对象。 取数据反序列化要想成功有一个关键点对象的属性列表必须和json格式的字符串中的属性名称一一对应。8.为什么要序列和反序列化直接操作字符串需要借助字符串截取等相应的方法。编写代码麻烦所以我们需要把json格式的字符串反序列化成对象。反序列化后操作对象方便访问对象的属性直接打点调用。9. 如何序列化和反序列化使用nuget搜索 LitJson 完成json数据解析*///不使用数据模型序列化和反序列化private void button1_Click(object sender, EventArgs e){//json字符串// 将json字符串转换成对象 反序列ToObjectJsonData jsonData JsonMapper.ToObject(File.ReadAllText(1.txt));// [{name:张三,age:18},{name:李四,age:20}]foreach (JsonData item in jsonData){Console.WriteLine(item[name]);Console.WriteLine(item[age]);}//修改数据jsonData[0][name] 王五;//序列化成json字符串// 序列化ToJsonstring json JsonMapper.ToJson(jsonData);Console.WriteLine(json);//IO 操作 存入字符串File.WriteAllText(1.txt, json);}//使用数据模型序列化private void button2_Click(object sender, EventArgs e){Person person new Person() { Name 张三, Age 18, Height 180f };Person person1 new Person() { Name 张三1, Age 19, Height 181f };Person person2 new Person() { Name 张三2, Age 29, Height 191f };//序列化json数据string personJsonStr JsonMapper.ToJson(person);Console.WriteLine(personJsonStr); //{Name:\u5F20\u4E09,Age:18,Height:180}//三个对象转jsonListPerson list new ListPerson();list.Add(person);list.Add(person1);list.Add(person2);string listJsonStr JsonMapper.ToJson(list);Console.WriteLine(listJsonStr);try{//IO 操作 存入字符串File.WriteAllText(2.txt, listJsonStr);}catch (Exception ex){Console.WriteLine(ex.Message);}//存入本地File.WriteAllText(2.txt, listJsonStr);}//使用数据模型反序列化private void button3_Click(object sender, EventArgs e){//方式1//JsonData jsonData JsonMapper.ToObject(File.ReadAllText(2.txt));//ListPerson list new ListPerson();//foreach (JsonData item in jsonData)//{// Person person new Person();// person.Name item[Name].ToString();// person.Age int.Parse(item[Age].ToString());// person.Height float.Parse(item[Height].ToString());// list.Add(person);//}//方式2ListPerson list JsonMapper.ToObjectListPerson(File.ReadAllText(2.txt));foreach (Person p in list){Console.WriteLine(p.Name);Console.WriteLine(p.Age);Console.WriteLine(p.Height);}}//使用数据模型嵌套序列化private void button4_Click(object sender, EventArgs e){People people new People() { Name 张三, Age 18};people.EmployeesList.Add(new Employee() { Position 视觉工程师, EmployeeId 1, CompanyName 微软 });People people1 new People() { Name 张三1, Age 19 };people1.EmployeesList.Add(new Employee() { Position 视觉工程师1, EmployeeId 11, CompanyName 微软1 });ListPeople list new ListPeople();list.Add(people);list.Add(people1);string listJsonStr JsonMapper.ToJson(list);Console.WriteLine(listJsonStr);//IO 操作 存入字符串File.WriteAllText(3.txt, listJsonStr);}//使用数据模型嵌套反序列化private void button5_Click(object sender, EventArgs e){ListPeople list JsonMapper.ToObjectListPeople(File.ReadAllText(3.txt));foreach (People p in list){Console.WriteLine(p.Name);Console.WriteLine(p.Age);foreach (Employee item in p.EmployeesList){Console.WriteLine(item.Position);Console.WriteLine(item.CompanyName);Console.WriteLine(item.EmployeeId);}}}/数据模型类 model 类public class Person{public string Name { get; set; }public int Age { get; set; }public float Height { get; set; }}public class People{public string Name { get; set; }public int Age { get; set; }//员工类集合 用于后续json数据嵌套public ListEmployee EmployeesList { get; set; } new ListEmployee();}//数据模型3 用于嵌套People类public class Employee{//职位public string Position { get; set; }//员工编号public int EmployeeId { get; set; }//公司名称public string CompanyName { get; set; }}MDIusing 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);}}}管理MDI子窗体foreach (Control item in MdiChildren){if (item is Form7){item.BackColor Color.Red;}}