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 相关文章推荐
js限制文本框的输入内容代码分享(3类)
Aug 20 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
Mar 11 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
Feb 14 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
Mar 09 Javascript
Javascript实现登录记住用户名和密码功能
Mar 22 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
node.js支持多用户web终端实现及安全方案
Nov 29 Javascript
使用JavaScript破解web
Sep 28 Javascript
vue基础之v-bind属性、class和style用法分析
Mar 11 Javascript
vueScroll实现移动端下拉刷新、上拉加载
Mar 22 Javascript
vue中组件的3种使用方式详解
Mar 23 Javascript
详解vue-router的导航钩子(导航守卫)
Nov 02 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获取目标函数执行时间示例
2014/03/04 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
javascript每日必学之继承
2016/02/23 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python中装饰器级连的使用方法示例
2017/09/29 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
三星英国官网:Samsung英国
2018/09/25 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
同事吵架检讨书
2014/02/05 职场文书
初中英语演讲稿
2014/04/29 职场文书
小学生安全责任书
2014/07/25 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
会计求职自荐信
2015/03/26 职场文书
任命通知范文
2015/04/21 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
Python道路车道线检测的实现
2021/06/27 Python