C#中json字符串的序列化和反序列化

摘要:
Json支持以下两种数据结构:键值对集合——各种编程语言支持这种数据结构;列表类型值的有序集合——包括数组、集合、向量或序列等。例如:varuser={“name”:“Manas”,“gender”:“Male”,“birthday”:“1987-8-8”}2.数组设置值的顺序,数组以括号“[”开头,以括号“]”结尾,所有值都用逗号分隔,例如:varuserlist=[{“user”:{“name”:“Manas”,“gender”:“Male”,“birthday”:“1987-8-8”}},{“user”:{“name”:“Mohaptera”,“Mahapatera”le“:”Female“,”birthday“:”1987-7-7”}}]3.字符串中任意数量的Unicode字符,请使用引号和反斜杠分隔。

       什么是 Json ?

       Json【javascript对象表示方法】,

       它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它,

       并且它很容易被计算机转化和生成,它是完全独立于语言的。

Json支持下面两种数据结构:

  • 键值对的集合--各种不同的编程语言,都支持这种数据结构;
  • 有序的列表类型值的集合--这其中包含数组,集合,矢量,或者序列,等等。

Json有下面几种表现形式:

     1.对象

           一个没有顺序的“键/值”,一个对象以花括号“{”开始,并以花括号"}"结束,

           在每一个“键”的后面,有一个冒号,并且使用逗号来分隔多个键值对。

           例如:var user = {"name":"Manas","gender":"Male","birthday":"1987-8-8"}   

     2.数组

           设置值的顺序,一个数组以中括号"["开始,并以中括号"]"结束,

           并且所有的值使用逗号分隔,

           例如:

                   var userlist = [

                                           {"user":{"name":"Manas","gender":"Male","birthday":"1987-8-8"}}, 
                                           {"user":{"name":"Mohapatra","Male":"Female","birthday":"1987-7-7"}}

                                           ]

     3.字符串

            任意数量的Unicode字符,使用引号做标记,并使用反斜杠来分隔。

            (注意: 引号  逗号  冒号  均为英文状态下半角符号, 且只能是双引号 )

            例如: var userlist = "{"ID":1,"Name":"Manas","Address":"India"}" 

C#中具体如何使用:           

           在C#中我们经常使用下面的工具来解析Json格式的内容

            Newtonsoft.Json,是.Net中开源的Json序列化和反序列化工具,官方地址:http://www.newtonsoft.com/json

具体使用:

1. 右键项目=>Nuget包管理=>添加  Newtonsoft.Json

2. 引入命名空间

1 using Newtonsoft.Json;

3. 定义类

复制代码
     public class Student
     {  
        public int ID { get; set; }
 
        public string Name { get; set; }

        public int Age { get; set; }

        public string Sex { get; set; }
     }
复制代码

 4. 序列化和反序列化实体对象

复制代码
//序列化对象
    Student one = new Student()
    { ID = 1, Name = "武松", Age = 250, Sex = "" }; 

    //序列化
    string jsonData = JsonConvert.SerializeObject(one); 

    Console.WriteLine(jsonData);  //显示结果
    Console.ReadLine();

    //反序列化对象
    string str = "{"ID":2,"Name":"鲁智深","Age":230,"Sex":"男"}";

//反序列化 Student two
= JsonConvert.DeserializeObject<Student>(str); Console.WriteLine( string.Format("学生信息 ID:{0},姓名:{1},年龄:{2},性别:{3}", two.ID,two.Name, two.Age,two.Sex));//显示结果 Console.ReadLine();
复制代码

输出结果:

C#中json字符串的序列化和反序列化第5张

5. 序列化实体对象集合

复制代码
   //序列化对象集合
   List<Student> oneList = new List<Student>() {
        new Student{ ID = 1, Name = "武大", Age = 260, Sex = "" },
        new Student{ ID = 2, Name = "武二", Age = 250, Sex = "" },
        new Student{ ID = 3, Name = "武三", Age = 240, Sex = "" }
   }; //定义对象

    string jsonData = JsonConvert.SerializeObject(oneList); //序列化

    Console.WriteLine(jsonData);  //显示结果
    Console.ReadLine();
复制代码

显示结果:

C#中json字符串的序列化和反序列化第8张

6. 反序列化实体对象集合(这里直接使用了 5 中的jsonData 字符串  , 原谅我偷点懒 )

复制代码
   List<Student> twoList = JsonConvert.DeserializeObject<List<Student>>(jsonData);

   foreach(Student stu in twoList)
   {
        Console.WriteLine(
        string.Format("学生信息  ID:{0},姓名:{1},年龄:{2},性别:{3}",
                                     stu.ID, stu.Name, stu.Age, stu.Sex));//显示结果   
    }
    Console.ReadLine();
复制代码

显示结果:

C#中json字符串的序列化和反序列化第11张

 【原文链接:】https://www.cnblogs.com/shang201215019/p/7907655.html

免责声明:文章转载自《C#中json字符串的序列化和反序列化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pyqt5学习之QThread让bootstrap-table支持高度百分比下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity5网络模块UNet介绍

  前段时间,研究了一下UNet,经过项目实践,大致整理了下遇到的问题。   源码Bitbucket:需要说明的是,这个项目只包含上层的包装,一些低层的网络实现在Unity内部,如NetworkTransport类等并不包含。   UNet常见概念简介   Spawn:简单来说,把服务器上的GameObject,根据上面的NetworkIdentity组件...

C# XML序列化实例学习

代码         /// <summary>        /// 反序列化        /// </summary>        /// <param name="type">对象类型</param>        /// <param name="filename">文件路径<...

WebLogic浅析

WebLogic安装 官网下载安装过程没啥特别的,不多说了自己去看吧! WebLogic简介   WebLogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JavaEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和...

rest-framwork官方文档教程(一)

该项目是按照官网quickstart进行的,具体也可查看rest-framework官网: https://www.django-rest-framework.org/tutorial/quickstart/# 一.安装依赖库 此处请确认你的python版本,如果你使用的是python3,那么在pip的时候和进入python命令行的时候要使用pip3和py...

java对象序列化、gzip压缩解压缩、加密解密

有时在应用中需要将java对象序列化存储起来,有的需要压缩,有的需要加密 EncryptUtil.java Java代码 packageorg.test.demo; importjava.io.UnsupportedEncodingException; importjava.security.InvalidKeyException; importj...

json常用的注解

json注解: 1、@jsonIgnoreProperties: 此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。 写法将此标签加在model 类的类名上 ,可以多个属性也可以单个属性 //生成json时将name和age属性过滤 @JsonIgnoreProperties({"name"},{...