C#中Json的序列化,反序列化

**

一.什么是Json

**
客户端向服务器端发送请求后,服务器端怎么才能把用户需要的数据返回给客户端呢。这时我们就需要用一个指定的格式将数据,按照指定格式返回客户端。这时就有了两种数据传输的方式(XML和Json):
  在普通的网络应用中,不管是服务器端还是客户端解析XML代码会非常麻烦,所以这时的Json的就更加满足数据传输解析的要求。采用的的Json格式的方式进行数据的传输,不仅方便传输解析,还特别易于人阅读和编写

二.Json的表现形式:

1.对象:


{

    "returnCode": "R0000",

    "returnMsg": "成功",

    "lessTimes": "2",

    "domainLink": "",

    "seqNum": "1",

    "identification": "595279",

    "isNeedImageCode": "false"

}

2.数组:


{

    "employees": [

        { "firstName":"John" , "lastName":"Doe" },

        { "firstName":"Anna" , "lastName":"Smith" },

        { "firstName":"Peter" , "lastName":"Jones" }

    ]

}

3.字符串:
任意数量的Unicode字符,使用引号做标记,并使用反斜杠来分隔。
(注意: 引号 逗号 冒号 均为英文状态下半角符号, 且只能是双引号 )
var userlist = "{\ "ID\ ":1,\ "Name\ ":\ "Manas\ ",\ "Address\ ":\ "India\ "}"

三.Json解析(序列化,反序列化)

序列化:将一系列字段序列化为Json格式
反序列化:序列化的反过程

Newtonsoft.Json,是.Net中开源的Json序列化和反序列化工具
具体使用:
右键项目=>Nuget包管理=>添加 Newtonsoft.Json
引入命名空间

using Newtonsoft.Json;

定义类

   public class Student
     {  
        public int ID { get; set; }
 
        public string Name { get; set; }

        public int Age { get; set; }

        public string Sex { get; set; }
     }

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

//序列化对象
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();

输出结果:
在这里插入图片描述

序列化实体对象集合

 //序列化对象集合

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

显示结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值