C#中JSON的序列化和反序列化取值示例

 

1.首先需要引用Newtonsoft.Json.dll文件(代码引用using Newtonsoft.Json和using Newtonsoft.Json.Linq;)

2.定义两个类PerSon和_Name,代码如下:(如何创建多个根节点的JSON字符串可以定义多个嵌套类的方式,参考下面_Name类)

        private class Person
        {
            public string Age { get; set; }//年龄
            public string Weight { get; set; }//体重
            public string Height { get; set; }//身高
            public string Sex { get; set; }//性别

            public _Name Name = new _Name();//名字类(有大名和小名)
        }

        public class _Name
        {
            public string FirstName { get; set; }//大名
            public string SecondName { get; set; }//小名
        }

 

 

a.序列化代码如下(效果图见代码后)

        private void button1_Click(object sender, EventArgs e)
        {
            Person per = new Person();
            per.Name.FirstName = "小白";
            per.Name.SecondName = "小红";
            per.Age = "20";
            per.Weight = "80kg";
            per.Height = "168cm";
            per.Sex = "";

            string js = JsonConvert.SerializeObject(per);//序列化

            textBox1.Text = js;
        }

b.反序列化代码取对应节点的值如下(效果图见后)

反序列化的时候,其实可以把JSON字符串作为一个XML文档来理解,多个大括号包含的相当于XML的主体到子节点到根节点的一个意思,这里我们把Name的值取出来,可以看出来下面有我们定义的两个根节点大名和小名

        private void button2_Click(object sender, EventArgs e)
        {
            var jobject = JObject.Parse(textBox1.Text);
            var weight = jobject["Name"].ToString();
            textBox1.Text = weight;
        }

c.取出根节点的值

我们在上面已经取出了Name节点的值,我们这里可以对这个Name在做一次取值的操作

        private void button3_Click(object sender, EventArgs e)
        {
            var jobject1 = JObject.Parse(textBox1.Text);
            var b = jobject1["FirstName"].ToString();
            textBox1.Text = b;
        }

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/Tian-HW/p/15251118.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!