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

json是1年内迅速红遍全球的东东。
现在解释JSON是什么,大家都会说我老土吧,这里我想分析一下json红的原因,我们又得到什么启示呢。
json是什么,http://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么?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Bootstrap和animate.css的模态框动画效果

最近在网上看到了可以对Bootstrap模态框增加打开和关闭的动画效果&#xff0c;故记录一下。原文地址点这里 此动画效果需要引入animate.css&#xff0c;可以在animate.css官方网址中点击下载animate.css. 这篇文章和这篇有对animate的简介。 将如下代码放入JS文件全局引入…

JavaScript模态对话框类(拖拽时动画)

2010年写了一个模态对话框类&#xff0c;这次进行一些重构和扩充。拖拽时使其有动画效果。接口没变&#xff0c;如下 new ModelDialog({caption 标题 对话框标题(默认)template 主体内容 (默认)dialogCls 对话框className md-dialog(默认)headCls 头部classNa…

C#中其他简单LINQ查询表达式的简单使用介绍

本文主要记录下其他简单LINQ表达式&#xff0c;因为比较简单&#xff0c;记录下以后方便回忆&#xff0c;本文也会持续更新。 一些有用的LINQ扩展方法&#xff1a; LINQ表达式作用是否延迟查询Range生成指定范围内的整数的序列 Repeat生成包含一个重复值的序列 Skip跳过指定数…

支持上传文件的xhEditor for Typecho EX插件

2019独角兽企业重金招聘Python工程师标准>>> Typecho是一套超轻量的开源博客&#xff0c;界面简洁&#xff0c;功能紧凑&#xff0c;但是Typecho的文本编辑器实在是不好&#xff0c;需要自己写html代码&#xff0c;插图也不方便。试用了几个插件&#xff0c;发现Tin…

『JavaScript』利用Javascript获取IP地址内容方法

&#xff08;不断收集完善中……&#xff09; 使用http/javascript接口取IP数据 1、新浪的IP接口&#xff1a;http://counter.sina.com.cn/ip/&#xff0c;在浏览器中输入此地址&#xff0c;可以看到一个表达式&#xff0c;这个表达式就是返回值。 2、具体的代码实现&#xff1…

C#中IEnumerableT.Select()、SelectMany()的简单使用

本文主要用来记录、让自己有所了解和提升&#xff0c;以后遗忘时可以查看&#xff0c;关于SelectMany()&#xff0c;这篇文章写得不错&#xff0c;值得一看。 话不多说&#xff0c;先上代码看 Select() public class Person {public string Name { get; set; }public string G…

C#中合并两个lambda表达式

在LINQ中如何查询条件不固定&#xff0c;如何合并两个lambda表达式&#xff1f;其中一个方式是LINQ.Dynamic&#xff0c;关于LINQ.Dynamic的简单使用可以参考这篇文章&#xff0c;还有一种方法是利用Expression表达式树&#xff0c;有关表达式树的介绍&#xff0c;可以看这篇文…

HTML5小例子

1.很酷的语音输入(目前只有谷歌浏览器支持) <!DOCTYPE html> <html><head><!--<link href"/html.js" />--><title>HTML5 </title><style></style></head><body>请输入&#xff1a;<input type…

SQL SERVER删除及恢复不安全的储存过程

删除有安全隐患的扩展: exec sp_dropextendedproc xp_cmdshell [删除此项扩展后,将无法远程连接数据库] exec sp_dropextendedproc xp_dirtree [删除此项扩展后,将无法新建或附加数据库] exec sp_dropextendedproc xp_enumgroups exec sp_dropextendedproc xp_fixeddrives exec…

C#中Lambda表达式动态拼接生成工具类

本文代码转自这篇文章&#xff0c;先做下记录。 public static class LambdaUtil<T>{/// <summary>/// lambda表达式:t>true/// </summary>/// <returns></returns>public static Expression<Func<T, bool>> True(){return t >…

iPhone开发中现文件的增加 删除和查询

iPhone开发中&#xff0c;我们常常用到一些对于文件的增加&#xff0c;删除和查询&#xff0c;这些基本的功能对于开发者来说非常的重要&#xff0c;而且非常实用。本文给大家介绍一下如何实现这几个具体的功能。 //创建文件 -(void)CreateFile:(NSString*)path fileName:(NSSt…

彻底理解 Cookie、Session、Token

发展史 1、很久很久以前&#xff0c;Web 基本上就是文档的浏览而已&#xff0c; 既然是浏览&#xff0c;作为服务器&#xff0c; 不需要记录谁在某一段时间里都浏览了什么文档&#xff0c;每次请求都是一个新的HTTP协议&#xff0c; 就是请求加响应&#xff0c; 尤其是我不用记…

dbgrid 获取前台页面参数

按照datagrid方式传参数。在配置文件中用符号获取参数 前台datagrid参数queryParams:{"batchId":1} 配置文件获取参数<grid-relation> id not in (select woman_id from ruxian_exam where batch_id batchId) </grid-relation>转载于:htt…

C#中利用Expression表达式树进行多个Lambda表达式合并

在上一文中介绍使用了合并两个Lambda表达式&#xff0c;能两个就能多个&#xff0c;代码如下图所示&#xff1a; public static class ExpressionHelp{private static Expression<T> Combine<T>(this Expression<T> first, Expression<T> second, Func…

C#利用反射实现动态加载程序集简单案例

反射可以不但用来读取元数据&#xff0c;还可以使用反射从编译时还不清楚的类型中动态创建程序集&#xff0c;此案例摘自C#高级编程。 首先先创建一个控制台应用程序&#xff0c;然后添加一个类库&#xff0c;类库名称为CalculatorLib&#xff0c;如下图所示&#xff1a; Calcu…

设置与读取C#控制台应用程序Main函数中的参数args

在项目属性面版->调试->命令行参数设置。空格分隔。读取&#xff1a;string[] str Environment.GetCommandLineArgs();Main函数是C&#xff03;应用程序的入口点&#xff0c;Main函数可以有四种签名&#xff0c;分别如下:static void Main()static void Main(string[] a…

深入了解C#反射中Assembly.Load()、Assembly.LoadFrom()、Assembly.LoadF ile ()方法

本文转自&#xff1a;https://www.cnblogs.com/zagelover/articles/2726034.html Assembly.Load() Load()方法接收一个String或AssemblyName类型作为参数&#xff0c;这个参数实际上是需要加载的程序集的强名称&#xff08;名称&#xff0c;版本&#xff0c;语言&#xff0c;公…

基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇

为什么80%的码农都做不了架构师&#xff1f;>>> 开篇 系统架构的文章&#xff0c;准备在这段时间好好的梳理和整理一下&#xff0c;然后发布基于AgileEAS.NET平台之上的企业级应用架构实践&#xff0c;结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑…

修改Visual Studio类模板注释信息

背景资料 在开发过程中&#xff0c;经常需要给新增的类和接口添加 public 修饰符和一些相关的注释信息&#xff0c;这个工作是机械而且枯燥的&#xff0c;这个可以通过修改VS自带的类模板来实现。 1、首先找到VS的安装目录&#xff0c;例如如下目录&#xff1a; D:\Program F…

CGDC

为什么80%的码农都做不了架构师&#xff1f;>>> 听了两天&#xff0c; eve online的讲服务器不错&#xff0c;涉猎较少&#xff0c;所以只能谈下当时记得东西。 eve服务器用stackless python来编程&#xff0c;由于分布式做的比较好&#xff0c;可以通过扩展硬件来…