7.31 C#学习笔记(Json数据、Json序列化与反序列化)
·
Json数据
创建Json文件
在这里我们将创建Json文件封装为一个方法 这里的path指的是文件路径
//创建Json数据
public static void CreateJson(string path)
{
//创建一个Json对象
JObject J = new JObject();
//第一种向Json对象中添加数据的方法
//索引器
J["name"] = "张三";
J["id"] = 123456;
//第二种向Json对象中添加数据的方法
J.Add("sex", "男");
//创建一个Json数组添加
JArray Ja = new JArray();
Ja.Add("red");
Ja.Add("blue");
Ja.Add("yellow");
J.Add("Color", Ja);
//保存Json数据到文件
string str = J.ToString(); //将Json对象的数据转化为字符串
using (StreamWriter sw = new StreamWriter(path,false)) //将数据写入文件 ture表示追加,false表示覆盖
{
sw.WriteLine(str);
}
Console.WriteLine("写入成功");
}
解析Json数据
在这里我们将解析(读取)Json文件封装为一个方法 这里的path指的是文件路径
//解析(读取)Json数据
public static void ReadJson(string path)
{
string strjson;
// 读取Json数据的文件
using (StreamReader sr = new StreamReader(path))
{
strjson = sr.ReadToEnd();
}
//将Json数据格式的字符串 转化为Json对象
JObject J = JObject.Parse(strjson); //只能解析一个Json对象,上述写入应设置为覆盖模式,不然会报错
//提取数据
//解析出来之后 使用的话就接收 如果只是看一下数据 直接打印即可
string name = J["name"].ToString();
Console.WriteLine(name);
Console.WriteLine(J["id"]);
Console.WriteLine(J["sex"]);
Console.WriteLine(J["Color"]);
//JArray ja = new JArray(J["Color"]);//[["red","blue","yellow"]] 这里形成了多维数组了
//foreach (var item in ja)
//{
// Console.WriteLine(item);
//}
//遍历Color中的数据
foreach (var item in J["Color"])
{
Console.WriteLine(item);
}
}
Main函数调用
static void Main(string[] args)
{
string path = Directory.GetCurrentDirectory() + "\\Json数据1.txt"; //创建路径
CreateJson(path);
ReadJson(path);
}
运行结果:

Json序列化与反序列化
对于类实例化出来的对象中的数据我们怎么转化为Json数据进行储存呢?
我们可以将对象序列化为Json对象,就可以把对象中的数据变为Json数据了。
Json序列化
创建了一个Student类:
internal class Student
{
public string Name { get; set; }
public int Id { get; set; }
public bool Sex { get; set; }
public string Address { get; set; }
public Student(string name, int id, bool sex, string address)
{
Name = name;
Id = id;
Sex = sex;
Address = address;
}
}
序列化对象:
//将对象 序列化为Json对象 将对象中的数据 转化为Json数据
Student stu1 = new Student("李四", 000000,"男", "河南省郑州市高新区");
string ObjJson = JsonConvert.SerializeObject(stu1);
//将数据写入文件
string path = Directory.GetCurrentDirectory() + "\\Json数据2.txt"; //创建路径
using (StreamWriter sw = new StreamWriter(path, false)) //将数据写入文件 ture表示追加,false表示覆盖
{
sw.WriteLine(ObjJson);
}
Console.WriteLine("写入成功");
Joson反序列化
//解析对象 反序列化 就是将Json数据 转回为原有类型
Student stu = JsonConvert.DeserializeObject<Student>(ObjJson);
Console.WriteLine(stu);
Console.WriteLine(stu.Name);
Console.WriteLine(stu.Sex);
Console.WriteLine(stu.Address);
Console.WriteLine(stu.Id);
运行结果:

更多推荐


所有评论(0)