irpas技术客

C#学习之读取并修改JSON文件_SJ小学生_c# 读取json文件

网络 6752

本博客是自己记录学习所用。 学习内容 一、了解什么JSON文件 二、如何使用C#读取

一、什么是JSON文件 JSON网站:https://·/json/json-tutorial.html 1、它是啥? JSON全程为JavaScript Object Notation,一看就知道是Java搞的一个数据格式。官方说法是一种轻量级的数据交换格式。

2、它长啥样? 菜鸟教程里提供的JSON实例图片:

3、它咋读? JSON文件可以直接使用记事本读取。 顾名思义,JSON里面包含的都是一些数据,使用不同的数据类型进行保存。

数据在名称/值对中 数据由逗号分隔 大括号 {} 保存对象 中括号 [] 保存数组,数组可以包含多个对象

一些实例 数据很好懂,大括号就很像python语言里面所说的字典。 像这个文件,最开始是个大括号,那么说明是个字典,字典里面有个关键字sites,sites里面有个中括号即数组,数组保存三个字典,每个字典里面有name和url两个名称,分别指的是网站名字和网址。

不同的类型有不同的读取方法 在此之前,有必要解释几个基本概念:

json字符串,就是string,它一定是由双引号包起来的,如"{‘name’:‘jerry’}"。这是一个string,尽管去掉双引号后它就是一个json对象。

json对象,就是以大括号开头的对象,如{“name”:“jerry”}; 而获取name值的方式就是 json.name 或者 json[“name”];

json数组,就是以中括号开头的json对象数组,如[{“name”:“tom”},{“name”:“jerry”}];获取值的方式是 json[0].name 或 json[0][“name”]; //这里取第一个name

4、总结: 感觉JSON就是一个用类似python字典类型进行不断嵌套的一个数据,里面可以包含数值、字符、字符串、数组、字典等等。

二、如何使用C#读取和修改 本次使用的编辑器是VS2022版本。

设计的操作界面

代码部分: 首先引用库

using System.IO; using Newtonsoft.Json; using Newtonsoft.Json.Linq;

先定义一个跟Json文件一样的类用于存储数据。

public class DATA { public string id { get; set; } public int dev_type { get; set; } public double mmpx { get; set; } public int line { get; set; } }

左上角的按钮内容,输入文件地址。

private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); //声明打开文件 ofd.Title = "请选择打开的文件"; ofd.Filter = "json文件(*.json)|*.json"; if (ofd.ShowDialog() == DialogResult.OK) //窗体打开成功 { textBox1.Text = ofd.FileName; //获取或设置用户选定的路径 } }

查看按钮部分

public void jiexi_click(object sender, EventArgs e) { //string json = "[ { 'id':'AAA', 'dev_type':2, 'mmpx':1.2, 'line':0 }, { 'id':'BBB', 'dev_type':3, 'mmpx':2.2, 'line':1 } ]"; //List<DATA> datas = JsonConvert.DeserializeObject<List<DATA>>(json); //用List作为容器装Person数组 //如何使用e.g:datas[0].id string data = File.ReadAllText(textBox1.Text); int num = int.Parse(input_num.Text); List<DATA> parameters = JsonConvert.DeserializeObject<List<DATA>>(data); value1.Text = parameters[num].id; value2.Text = parameters[num].dev_type.ToString(); value3.Text = parameters[num].mmpx.ToString(); value4.Text = parameters[num].line.ToString(); }

保存地址按钮

private void save_adress_click(object sender, EventArgs e) { FolderBrowserDialog fd = new FolderBrowserDialog(); if (fd.ShowDialog() == DialogResult.OK) { aim_location.Text = fd.SelectedPath;//选择地址 aim_location.Text = String.Concat(aim_location.Text, "\\converted.json"); } }

保存按钮地址

private void Change_cilck(object sender, EventArgs e) { string data = File.ReadAllText(textBox1.Text); int num = int.Parse(input_num.Text); List<DATA> parameters = JsonConvert.DeserializeObject<List<DATA>>(data); parameters[num].id = value1.Text; parameters[num].dev_type = int.Parse(value2.Text); parameters[num].mmpx = double.Parse(value3.Text); parameters[num].line = int.Parse(value4.Text); File.WriteAllText(aim_location.Text, JsonConvert.SerializeObject(parameters)); MessageBox.Show("修改保存完成!"); }

总结: 本次实验由于时间比较仓促,还是有很多部分没有完成,并且完全没有泛化能力。但是能够提供一个大概的结构,经供参考。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #C #读取json文件 #本博客是自己记录学习所用 #Object #2它长啥样菜鸟教程里提供的