Json和其序列化和反序列化
来源:互联网 发布:人工智能算法有哪些 编辑:程序博客网 时间:2024/05/12 14:32
最近经常在说Json传值,Json序列化,什么是Json?什么又是Json的序列化和反序列化?
什么是 JSON ?
大家是否知道Json的全称?—JavaScript Object Notation(JavaScript 对象表示法),说白了Json就是一种字符串,一种带有格式的字符串,一种可读性很强,操作方便的字符串。因为Json字符串存储信息的方式和hashtable,Dictionary一样都是键值对的形式。
Json的结构很简单,也很复杂。简单是因为Json的结构只有两种:对象和数组。
对象和数组大家都很熟悉,在JS中对象的表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 “对象.key” 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [” 数值1”,”数值2”,”数值3”,…],取值方式和其他语言中一样,使用索引获取,字段值的类型和上面对象的属性值一样,可以是 数字、字符串、数组、对象几种。
说Json结构复杂是因为:Json可以通过对象、数组这2种结构的组合,从而形成任何复杂的数据结构。
Json实例:
{ "学生": [ {"姓名":"小明","年龄":23}, {"姓名":"大憨","年龄":24} ] }
上面这个Json对象,包含一个名为学生的数组,数组中的每条记录又是一个Json对象。对象有两个属性分别为:姓名和年龄。这就是一个既包含数组也包含对象的Json实例
说道Json是作为一种存储和交换文本信息的语法,这使我不得不想到XML。因为XML在这方面也是高手。他们有什么异同呢?
相同之处,他们都是纯文本,且有一定的格式都够保存传输数据,可以用JS来对其进行解析。不同之处在于,Json没有结束标签,格式相对简单,能够使用内建的 JavaScript eval() 方法进行解析。
除了上述之外,JSON和XML还有另外一个很大的区别在于有效数据率。JSON作为数据包格式传输的时候具有更高的效率,这是因为JSON不像XML那样需要有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输压力 。
Json的序列化和反序列化
这里的序列化主要就是为了传输方便,将要传输的对象序列化为二进制的数据流,效率极高,接收时通过反序列化转化成对象,从而达到一个传输的效果。简单点来说,序列化就是将对象转换成Json格式的字符串,反序列化就是逆过程,将Json串转换成对象。
实例
JS代码:建立学生对象数组
var stucheck = [ {"姓名":"小明","年龄":23},{"姓名":"大憨","年龄":24}] //用stringify函数将对象stucheck序列化,提交到后台,增加分享记录 $.ajax({ type: "POST", url: "/VideoPlayer/AddVideoShareRecordList", data: { stuList: JSON.stringify(stucheck) }, success: function (data) { if (data == true) { alert("分享视频成功!"); } else { alert("分享失败,请检查网络!"); } } });
后台解析:
public bool AddStuRecordList() {//获取Json串 string stuList = Request["stuList"];//声明一个学生的实体集合 List<StuRecord> stuAddList = new List<StuRecord>(); //声明一个servializer 类用来完成Json的反序列化 JavaScriptSerializer servializer = new JavaScriptSerializer();//完成Json的反序列化 stuAddList = servializer.Deserialize<List<StuRecord>>(stuList); bool isok = AddRecordList(stuAddList); return isok; }
注意:JS中的对象和后台中的对象应该保持一致,才能完全转换。在后台进行序列化和反序列化需要引入插件,JavaScriptSerializer 或者 Newtonsoft.Json.JsonConvert,添加引用即可。
以上就是对Json的一些简单了解,不正确的地方请指出。
- Json和其序列化和反序列化
- Json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- Json序列化和反序列化
- json序列化和反序列化
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- 3.24
- 创建单例(完整版)
- 【Node.js基础篇】(二)Node模块的使用
- HDU_1232通畅工程
- 【Daimn Cocos2d-x 】如何创建一个Cocos2d-x的项目.
- Json和其序列化和反序列化
- iOS开发系列--通知与消息机制
- node.js操作mongodb数据库(增删查改分页)
- wxWidgets的下载与安装
- 腾讯2015春招pc客户端开发练习卷/腾讯2016研发工程师在线模拟笔试题
- MySQLIntegrityConstraintViolationException: Duplicate entry '***' for key 'PRIMARY'
- RFID与物联网的关系
- Android SDK镜像的介绍使用
- [LeetCode 154]Find Minimum in Rotated Sorted Array II