面试中问道了使用过xml没有,在我做过的ROR项目中浏览器和服务器中大多数传输的是json格式数据,但这要看客户端需要的是哪种类型数据了,Rails框架中就提供了数据类型这样接口。所以在客户端请求该类型数据很容易组织数据。
在客户端:
对于JSON数据,只需要调用JavaScript的Eval方法就可以将JSON字符串序列化成为JavaScript对象,而后就可以直接访问了。
对于XML数据,其本身是一个DOM Tree的数据结构,开发人员必须使用DOM API来访问和处理XML数据,而且DOM在各个浏览器中的实现也不尽相同,所以针对XML DOM的编程方式会变的更为复杂。
在服务端:
对于序列化或者犯序列化一个对象成为XML字符串,各种服务端的编程语言都有提供,而且还会有多种方式。例如.NET Framework就提供了XmlSerializer类来序列化一个对象成为Xml文档,另外开发人员还可以使用XmlWriter、XMLDocument来直接构建Xml字符串。
对于JSON这样一种数据格式则鲜有提供,这就需要开发人员自己动手或者使用一些Open Source的Library。在复杂对象的序列化或者反序列化上,由于Xml做的比较早应该会更稳定一些。
在性能上:
从数据传输量上来看JSON显然要优于XML,JSON更轻量级一些,它没有像XML那样多的Open和Closing标记。同时在对数据的解析速度上,JSON也要优于XML。
在安全性上:
JSON 本来是JavaScript 的一个安全的子集,不会含有赋值和调用。因此在将JSON数据装换成为JavaScript对象的时候,包括许多JavaScript库都使用eval函数。这意味着获取的JSON数据将被解析并执行,对于数据是来自用户输入的话,可能会带来意想不到的安全性问题。攻击者也可以利用这点发送畸形、恶意JSON数据,这样Eval 函数就会执行这些恶意代码。从数据格式的验证角度来看的话,XML的验证技术更成熟,而目前关于JSON的验证还比较少。
参考:
[url]http://www.cnblogs.com/bnuvincent/archive/2009/11/15/1603481.html[/url]
在客户端:
对于JSON数据,只需要调用JavaScript的Eval方法就可以将JSON字符串序列化成为JavaScript对象,而后就可以直接访问了。
对于XML数据,其本身是一个DOM Tree的数据结构,开发人员必须使用DOM API来访问和处理XML数据,而且DOM在各个浏览器中的实现也不尽相同,所以针对XML DOM的编程方式会变的更为复杂。
在服务端:
对于序列化或者犯序列化一个对象成为XML字符串,各种服务端的编程语言都有提供,而且还会有多种方式。例如.NET Framework就提供了XmlSerializer类来序列化一个对象成为Xml文档,另外开发人员还可以使用XmlWriter、XMLDocument来直接构建Xml字符串。
对于JSON这样一种数据格式则鲜有提供,这就需要开发人员自己动手或者使用一些Open Source的Library。在复杂对象的序列化或者反序列化上,由于Xml做的比较早应该会更稳定一些。
在性能上:
从数据传输量上来看JSON显然要优于XML,JSON更轻量级一些,它没有像XML那样多的Open和Closing标记。同时在对数据的解析速度上,JSON也要优于XML。
在安全性上:
JSON 本来是JavaScript 的一个安全的子集,不会含有赋值和调用。因此在将JSON数据装换成为JavaScript对象的时候,包括许多JavaScript库都使用eval函数。这意味着获取的JSON数据将被解析并执行,对于数据是来自用户输入的话,可能会带来意想不到的安全性问题。攻击者也可以利用这点发送畸形、恶意JSON数据,这样Eval 函数就会执行这些恶意代码。从数据格式的验证角度来看的话,XML的验证技术更成熟,而目前关于JSON的验证还比较少。
参考:
[url]http://www.cnblogs.com/bnuvincent/archive/2009/11/15/1603481.html[/url]