JSON为什么那样红为什么要用json(另有洞天)


Posted in Javascript onDecember 26, 2012

json是1年内迅速红遍全球的东东。
现在解释JSON是什么,大家都会说我老土吧,这里我想分析一下json红的原因,我们又得到什么启示呢。
json是什么,json.org是一种简洁有效的数据载体,是一种用字符串表示复杂js对象的方式,后端好生成,前端0解释。
它的风行和一下几点原因离不开的。

持久化的风潮
persistence是javaEE5引入的重要模块。
php先天具备持久化特性每个变量都可以serialize()和unserialize()与字符串相互转化。
持久化带来最直接的好处就是复杂对象存储和传输,衡量持久化机制的优劣的重要标准是效率。

WEB2.0的推动
Ajax引发了Web2.0革命,其中的x是xml。在ajax中xml是作为前后台数据传输的载体的。
随着Web2.0的大规模应用,xml解释的效率问题就暴露无疑了,xml是具有非常严禁的结构,这造成了任何浏览器把xml装入,解释成javaScript可以访问的对象的过程是漫长的。而json是js默认支持的最简洁对象创建方式,js接收他是轻松加愉快的,所以在持久化数据传输的舞台上json靠效率取胜。

JSON本身易用
Ajax为什么一些老技术结合起来突然火了呢,因为易用。说白了自从上世纪有了DHTML,无刷新异步数据传输的解决方式绝不仅仅只有xmlHttpRequest一家。隐藏的iframe完全可以做到,而且一直也有人这么干。Ajax红了在于其易用性,所以几家领军企业对期的大规模应用引发Web2.0.
JSON同样易用,会了JSON之后我已经用var obj = {};var arr = []代替了var obj = new Object();var obj = new Array()。JSON是js中最简洁的对象定义方式,对于会js,用过eval()的朋友基本上没有什么学习成本。

以XML为代表的树形结构的风靡:
从数据结构的角度看xml的流行,因为xml是一颗树,树状的数据结构在像xml一样除了本身的内容节点再加上属性节点之后的威力如何大家都有体会,DOM是这种结构,UML是这种结构。
当我们用数据去描述客观世界的时候发现仅仅靠关系数据模型中的二维表已显笨拙,树形结构是更接近思维的一种,这也是人们在做会议记录时不在是notepad而使用freemind的原因。同样使用二维表,记录parentid的方式存储树的效率低下也给了LADP的发展空间。
说回来JSON,他是一种定义JS对象的方式,而JS中的Object是一树的形式组织的实体,所以JSON定义的对象在描述数据的功能上是足够的。

再说几个JSON相关的话题
JSON是解决xml效率问题的唯一途径么?
也不尽然,在本人不知道json之前,在使用div传输数据。
后台传到前台的是xmlHttp.responseText = '<div age="18" personid="007">lenel</div>';
然后前台接受数据时使用

function toDivElememnt(s){ 
var oDiv = document.createElement("div"); 
oDiv.innerHTML = s; 
oDiv = oDiv.firstChild; 
return oDiv; 
}

这个方法里我没有用js来解释json,而是用DOM来解释HTML串,这也是相当自然的,前面已经说过HTML串也是树状结构,我拿到oDiv之后就可以访问到age,personid等等属性了,效率也是相当可以的,呵呵。
这个不是我的原创啊,来自与我从前的Leader,牛人啊,良师益友。

JSON会代替XML么?
不会,在Ajax这个领域可能我们会搞Ajaj,但是XML如果只能干这点事那就不是XML了:)

还没用JSON么?
不要落伍了哈哈,当前主流的后台语言都有在后台生成、解析JSON的API,具体怎么用json,API去哪儿找http://www.json.org看看吧

我们真的得到什么启示么?
我还是没总结出来具体的,但是我认为语言是相通的,javaScript不能IOC么?

Javascript 相关文章推荐
extjs3 combobox取value和text案例详解
Feb 06 Javascript
超级简单的jquery操作表格方法
Dec 15 Javascript
javascript日期计算实例分析
Jun 29 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
Jun 14 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
Oct 10 Javascript
使用JS代码实现点击按钮下载文件
Nov 12 Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 Javascript
vue中SPA单页面应用程序详解
Nov 07 Javascript
Vue项目路由刷新的实现代码
Apr 17 Javascript
jQuery实现图片下载代码
Jul 18 jQuery
Vue+Element自定义纵向表格表头教程
Oct 26 Javascript
vue组件中传值EventBus的使用及注意事项说明
Nov 16 Javascript
JS操作Cookies包括(读取添加与删除)
Dec 26 #Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 #Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
Dec 26 #Javascript
window.open以post方式将内容提交到新窗口
Dec 26 #Javascript
JavaScript中json对象和string对象之间相互转化
Dec 26 #Javascript
jQuery-serialize()输出序列化form表单值的方法
Dec 26 #Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 #Javascript
You might like
PHP开发的一些注意点总结
2010/10/12 PHP
PHP的加密方式及原理
2012/06/14 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
mac下安装nginx和php
2013/11/04 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
node后端服务保活的实现
2019/11/10 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python素数检测的方法
2015/05/11 Python
简单谈谈python中的多进程
2016/11/06 Python
python如何将图片转换为字符图片
2020/08/19 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Python netmiko模块的使用
2020/02/14 Python
降低python版本的操作方法
2020/09/11 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
精通CAD能手自荐书
2014/01/31 职场文书
职业女性的职业规划
2014/03/04 职场文书
公司请假条格式
2014/04/11 职场文书
客服专员岗位职责
2015/02/10 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android