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 面向对象的5钟写法
Jul 31 Javascript
jQuery学习3:操作元素属性和特性
Feb 07 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
Mar 02 Javascript
IE事件对象(The Internet Explorer Event Object)
Jun 27 Javascript
解释&&和||在javascript中的另类用法
Jul 28 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
Vue实现百度下拉提示搜索功能
Jun 21 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
vue.js实现插入数值与表达式的方法分析
Jul 06 Javascript
Vue.js 中的实用工具方法【推荐】
Jul 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转成EXE文件
2006/10/09 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
DOM 基本方法
2009/07/18 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
python类中super() 的使用解析
2019/12/19 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
python主要用于哪些方向
2020/07/05 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
导游个人求职信
2014/04/25 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
介绍长城的导游词
2015/01/30 职场文书
道士塔读书笔记
2015/06/30 职场文书