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);

运行结果:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐