本文采用问答的方式来写
问题一:什么是 json ?
json是一种轻量级的数据交换格式,非常适合服务器与JavaScript交互。(它和XML一样,都是用来处理交互数据的)
问题二:json 长什么样子?(json数据的3种格式)
简单格式: { "result" : 0, "Name" : "张三", "Age" : 32 }
含对象的格式:
{ "result" : 0, "school" : "广州中医药大学", "person" : { "teacher" : "老师", "student" : "学生" } }
含对象、数组的格式:
{ "result" : 0, "school" : "广州中医药大学", "person" : { "teacher" : "老师", "student" : [ { "student1" : "张三" }, { "student2" : "李四" }, { "student3" : "王五" } ] } }
JSON 语法规则
数据在名称/值对中
数据由逗号分隔
花括号保存对象 方括号保存数组
问题三:对 json 数据的操作有哪些?
答案:专业用语叫 “序列化和反序列化”。 什么意思呢?
“序列化” 就是将你写好的对象所包含的信息(比如对象的属性和属性值)转换成 json 数据——转换成上面那三种样子。
“反序列化” 是将序列化的过程反过来——将你接收的 json 数据转换成你写好的类的对象。
举个例子:比如说为了方便程序的操作你给数据表写了一个类,类的每一个属性都对应着表里的一个字段,而现在你接收了一个 json 数据,数据里的信息刚好和这个表对应,这个时候利用 json 数据的“反序列化”——别人已经写好的方法,你可以直接就将接收到的 json 数据处理成你想要的样子,而不用每次接收的时候都根据当时接收的数据的格式以及字段的名字再写一串代码来获取你想要的信息,这样来说反序列化是不是很方便呢。同理,序列化也是一样的。
问题四:在 .NET框架下如何对 json 数据进行序列化和反序列化?
就像上个问题里说的,这些东西别人是已经写好的。具体的步骤如下:
(一)下载JSON .NET插件和代码(这里给一个下载地址https://sourceforge.net/projects/csjson/?source=dlp,好像也可以在VS的 nuget 里下载,不懂的话可以百度关键词嘛)
(二)在项目中进行引用 Newtonsoft.Json.dll(正常的添加“引用”)
(三)添加命名空间:using Newtonsoft.Json;
接下来就是序列化和反序列化了
序列化:
Person person = new Person();
person.Name = "GoldenEasy";
person.Age = 25;
string strSerializeJSON = JsonConvert.SerializeObject(person);
Response.Write(strSerializeJSON);
反序列化:
string strSerializeJSON = JsonConvert.SerializeObject(person);
Person user = (Person)JsonConvert.DeserializeObject(strSerializeJSON, typeof(Person));
Response.Write(user.Name);