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 相关文章推荐
ExtJS 工具栏 分页事件参数
Mar 05 Javascript
JavaScript游戏之是男人就下100层代码打包
Nov 08 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
May 14 Javascript
JavaScript中匿名、命名函数的性能测试
Sep 04 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
分享jQuery网页元素拖拽插件
Dec 01 Javascript
详解node.js搭建代理服务器请求数据
Apr 08 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
Sep 23 Javascript
详解JavaScript中new操作符的解析和实现
Sep 04 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
PHP strtok()函数的优点分析
2010/03/02 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
在Django的视图中使用数据库查询的方法
2015/07/16 Python
说一说Python logging
2016/04/15 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
python 重命名轴索引的方法
2018/11/10 Python
python 自动批量打开网页的示例
2019/02/21 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
django foreignkey(外键)的实现
2019/07/29 Python
python编写微信公众号首图思路详解
2019/12/13 Python
如何基于Python创建目录文件夹
2019/12/31 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
幼儿园家长寄语
2014/04/02 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
反腐倡廉观后感
2015/06/08 职场文书
付款证明格式范文
2015/06/19 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
浅谈react useEffect闭包的坑
2021/06/08 Javascript
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android