JSON 学习之完全手册 图文


Posted in Javascript onMay 29, 2007

第一章 何谓JOSN
JSON:JavaScript Object Notation

是Javascript (jscript、ECMA Javascript等)描述对象数据(各种元数据其实也是最简单的对象)的一种数据结构。概念和用法均类似于Hash(哈希表)或者关联数组。

JSON建构于两种结构:

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

最简单的JSON例子如下:

[ 
{ name:"Michael", email:"17bity@gmail.com", homepage:"https://3water.com" }, 
{ name:"John", email:"john@gmail.com", homepage:"http://s.3water.com" }, 
{ name:"Peggy", email:"peggy@gmail.com", homepage:"http://tools.3water.com" }]

下面这个例子描述了一个邮件联系人列表,在javascript用eval 运行将获得一个maillist的对象实体,那么就可以用javascript做进一步的操作。

var maillist = [ 
{ name:"Michael", email:"17bity@gmail.com", homepage:"https://3water.com" }, 
{ name:"John", email:"john@gmail.com", homepage:"http://s.3water.com" }, 
{ name:"Peggy", email:"peggy@gmail.com", homepage:"http://tools.3water.com" } 
]

那么就可以用javascript做进一步的操作。

第二章 JSON格式

JSON的基本格式如下,图片来自json.org:
对象是属性、值对的集合。一个对象的开始于"{",结束于"}"。每一个属性名和值间用":"提示,属性间用","分隔。

JSON 学习之完全手册 图文

数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。

JSON 学习之完全手册 图文

字符串的定义和C或Java基本一致。
JSON 学习之完全手册 图文

数字的定义也和C或Java基本一致。
JSON 学习之完全手册 图文

第三章 应用 trimpath Template 进行 JSON 模版制作

Trimpath Template 是一个用来解析Json数据,生成网页代码的轻量级JS代码。

Demo:http://demo.3water.com/js/js_template/test.htm

trimpath.template基于JavaScript的,跨浏览器,采用APL/GPL开放源代码协议的,可以让你轻松进行基于模板编程方式的纯JS引擎。

http://code.google.com/p/trimpath/

它有如下的特点:

1、采用标准的JavaScript编写,支持跨浏览器
2、模板语法类似于:FreeMarker,Velocity,Smarty
3、采用简易的语言来描述大段的字串以及Dom/DHTML操作
4、可以很方便的解析XML文件格式的数据到指定模板。

采 用该引擎,可以让它来完全处理View方面的事情,服务端Module直接输出Data就可以。让你的MVC模式连成一体,而且由于View由浏览器来处 理,大大减少了服务器的负担,用来构建Ajax技术的网络信息系统应用是一个非常好的选择。

这是一个简单小巧的 模板工具类, 用来帮助使用者快速的拼装出所需要的字符串.

简单说明: 模板中 #{ ... /} 之间的数据将被 作为js脚本执行, 而其中VAR关键字代表的就是 seed 的值(从外部传入的一个变化的值).
模板分成两部分来执行, compile 和 run. #{..../}之间的部分在run期间被执行,
#{#...../} 之间的部分在编译期执行.编译期执行的代码中不能传入seed.
更多的说明也不用再写了,因为确实很简单的功能 呵呵.

原理: 实际上就是 利用传入的参数对 模板字符串中 #{ .../} 的部分进行替换.(对 #{ .../}之间的部分执行eval(),之后再替换).

如果你对模版技术感兴趣,也可以通过研究代码来获得更多的启发。

总结

作为JAVASCRIPT的默认数据格式,json在进行Ajax操作时显得非常方便,而且相对XML文件小了很多。因而在网速不甚理想的,系统耦合度比较高等情况下有更好的表现。

但是XML做为一种可以自描述的格式,在全世界有着更广泛的应用。所以当系统要求跨平台,跨语言时,采用XML仍旧是最好的选择。  

Javascript 相关文章推荐
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
Jan 12 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
Apr 07 Javascript
JS中的prototype与面向对象的实例讲解
May 22 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
Aug 22 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
Feb 20 Javascript
Express之get,pos请求参数的获取
May 02 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 Javascript
jquery使用echarts实现有向图可视化功能示例
Nov 25 jQuery
JavaScript数组排序小程序实现解析
Jan 13 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
Jul 24 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 Javascript
Highslide.js是一款基于js实现的网页中图片展示插件
Mar 30 #Javascript
JScript的条件编译
May 29 #Javascript
javascript学习网址备忘
May 29 #Javascript
?牟┛途W扣了一??效果出?? target=
May 27 #Javascript
JS获取scrollHeight问题想到的标准问题
May 27 #Javascript
如何实现动态删除javascript函数
May 27 #Javascript
javascript实现 在光标处插入指定内容
May 25 #Javascript
You might like
Zerg剧情介绍
2020/03/14 星际争霸
域名查询代码公布
2006/10/09 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
php中数组首字符过滤功能代码
2012/07/31 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
js前端面试之同步与异步问题详解
2019/04/03 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
学习党章思想汇报
2014/01/07 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
就职演讲稿范文
2014/05/19 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
试用期自我评价范文
2015/03/10 职场文书
2016教师节感恩话语
2015/12/09 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript