**
一.什么是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();
显示结果: