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日期对象的dateAdd与dateDiff方法
Nov 18 Javascript
让IE6支持min-width和max-width的方法
Jun 25 Javascript
open 动态修改img的onclick事件示例代码
Nov 13 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
使用变量动态设置js的属性名
Oct 19 Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
js实现右键菜单功能
Nov 28 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
Jan 23 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
jQuery中getJSON跨域原理的深入讲解
Sep 02 jQuery
Vue 实现拨打电话操作
Nov 16 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/06/03 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
面向对象编程的优势是什么
2015/12/17 面试题
五一服装活动方案
2014/01/11 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
美术教师求职信范文
2015/03/20 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers