https://blog.csdn.net/sinat_34719507/article/details/60885887
下面将介绍几种常用的数据编码技术:
2.5.3.1 用户自定义分隔符编码(微量级别)
简单的URL后面的传递:
这样以特殊符号作为分隔符的编码方法比较适用于结构单一的数据集合,数据在客户端和服务器端的编码和解码也是最简单的,编码只需要字符串相加即可,解码只需要用split()函数(C#和JS两种语言都有此函数)按照编码的分隔符规则进行分离并提取出有用信息即可。
总述:此方法好处是数据编码和解码很容易,坏处也显而易见,字符串所表示的数据集合结构层次不明,当数据集合稍微有点大的时候,字符串的可读性将变得很差。所以本方法只适合于传递的数据量比较少层次比较少的微量级别,比如一般传递不多于5组的层次单一的数据,如上例所示,但即使如此,也可以满足一般的开发者的需求了。
下面再讲的JSON编码是对于轻量级别(比微量级别要复杂一些)的数据的一种编码方式,
2.5.3.2 JSON编码技术(轻量级别)
关于JSON的介绍,网上有这么一段话:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式易于人阅读和编写同时也易于机器解析和生成。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)这些特性使JSON成为理想的数据交换语言。
关于JSON编码更详细的介绍可以到网上查找相关文档,或者直接访问其官方网站json.org。在从事JSON的应用时应先到官网上下载两个文件:json.js和JSON.CS。分别作为客户端和服务器端JSON的编码和解码库文件。
(1)服务器端JSON编码和解码
用从json.org网页中下载的“JSON.CS“文件,然后在服务器端中引用引文件,就可以在写C#函数的时候调用里面的函数了。”JSON.CS“文件里面函数虽然众多,但是直接给外部调用的只有两个:
public static object JsonDecode(string json)
public static string JsonEncode(object json)
即一个是编码函数一个是解码函数:编码函数将服务器端的object对象转换成字符串对象,然后传递到客户端;解码函数将从服务器端接收到的string对象转换成object对象供服务器提取数据。其余的函数都是供这两个函数调用的。
需要说明的是,上面所说的string类型的数据不是一般的任意字符串,而是有一些特别分隔符组成的“JSON字符串“,只有这样格式良好的string字符串才能够被此文件中的函数进行解码,而编码的作用也就是将object数据类型编码成这样的格式良好的“JSON字符串“,正因为遵守了这样的规则才使得JSON编码能够跨语言传递数据了。
(2)客户端JSON编码和解码
从json.org网页中下载的”json.js”文件,然后在客户端引用此文件,就可以在写JS函数的时候调用里面的函数了。和服务器端的”JSON.CS”相对应的,它里面虽然代码众多,但是供外界调用的也只有两个函数――一个编码函数一个解码函数:
JSON.stringify(value, replacer, space);//后面两个参数是可选项 JSON.parse(text, reviver);//后面的参数是可选项
json是JavaScript里面的一种数据格式,其地位相当于C语言中的结构体一样,是一个数据集合,用户可以通过“结构体“的点运算符直接对里面的数据进行提取和引用。
(3)中文字符串的编码和解码
服务器端“JSON.CS“中编码函数对中文有比较好的支持,可以直接将中文编码成Unicode的编码,在程序运行期间查看这些中文字符串的时候,看不到中文,但是可以看到其对应的数字编码,经过客户端的JavaScript解码函数解码后得到的json对象可以直接被识别这样的Unicode,并直接以中文呈现在页面中的。
客户端“json.js“中对json object的中文编码则不那么“智能”了,需要另外处理才能够传递中文字符。 只需要对中文字符串进行一个escape()的JS方法转码后就可以了,在服务器端和escape()转码函数相对应的反转码函数为UrlDecode()。
总述:JSON是一种比较有潜力的网页编码格式,它具有良好的可读性(结构清晰)的移植性,对比下面XML来说其编码效率比较高――即用来表示格式的字符占整体字符数目的比例比XML字符串小多了,所以对于轻量级别的字符编码是很高效实用的,而且因为JSON格式本来就是一种JavaScript对象,所以对于客户端的JavaScript语言有着天然的亲和力,很适合传递JavaScript变量。JSON编码解码流程可参考下图:
2.5.3.3 XML编码技术(重量级别)
(1)服务器端XML编码和解码
用.NET里面的System.Xml里面相关类可以很容易实现对XML字符串的编码和解码。关于XML的解码在.NET提供了一个XmlDocument类,并提供了大量操作XML文档节点和属性的接口函数,通过这个类,用户可以很方便实现节点定位从而实现XML文档的编码和解码。对于编码XML文档,还有一个更加容易的方法,用户直接将数据字符串和XML节点字符串相加就可以得到一个XML格式的字符串了(字符串累加法),然后就可以用于异步通讯传输了。
(2)客户端XML编码和解码
客户端利用JavaScrpt对数据进行XML编码的方法和客户端比较类似,也可以利用最 “字符串累加法”进行编码,解码也是在客户端用JavaScript构造一个XML文档对象,通过Xpath或者对节点进行遍历进行解码
总述:网上的观点是XML是一种重量级别数据编码方式,它有很多优点,对中文字符串的编码和解码有比较好的支持,文档的结构性很好,不管是编码还是解码,过程都清晰明了。对比JSON来说,缺点也很显明,就是编码的效率不是太高,往往对一个字符进行编码就需要额外至少2个字符的标签来规定格式。但是对于性能要求不是太高的网页中,不管是轻量级别的应用还是重量级别的应用,开发人员都可以选择XML,因为它的编码和解码过程相比JSON要简单很多,而且不难发现HTML其实也是一种拥有特别标签的XML文档而已,所以XML和HTML文档有着天然的亲和性,很适合传递一些HTML页面内容。
————————————————
版权声明:本文为CSDN博主「Aiotol」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_34719507/article/details/60885887