XML的代替者----JSON


Posted in Javascript onJuly 21, 2007

我个人觉得PHP与Javascript各有长处,如果能完美的结合起来,那将创造出许许多多的奇迹! 我是初次写此类文章,Bug难免,请各位指正~ 
    现在AJAX应用非常流行,而在AJAX中客户端Javascript和服务端动态脚本的通信是关键。如果传输的信息比较简单,通常我们会直接采用字符串的方式,如果信息结构复杂一点,则通常用XML文档。XML文档虽然应用广泛,但是用php生成和用Javascript处理却不是一件很容易的事情。这里我推荐一种XML文档的比较好简化替代方案:JSON! 
    首先我们来了解一下Javascript的基础知识。 
    1.创建数组,可以用JS内建的类Array来初始化,也可以用JSON符号"[]"。下面通过两种方式创建的arr1和arr2的实质是一样的: 

var arr1 = new Array(); 
arr1[0] = "apple"; 
arr1[1] = "google"; 
arr1[2] = "longbill"; 

var arr2 = ["apple","google","longbill"];
注意,数组的索引也可以是字符串,如 arr1["name"] = "longbill"; 这时的数组就相当于对象了。。。 
    2.创建对象,可以用JS内建的类Object来初始化,也可以用JSON符号"{}"。下面通过两种方式创建的obj1和ob2的实质也是一样的: 

var obj1 = new Object(); 
obj1.name = "longbill"; 
obj1.age = 18; 

var obj2 = { name:"longbill",age:18 };
注意,这里"{"和"}"之间必须写成"键:值"的形式,而且不同的"键:值"之间要用","分割。 "键"中也可以包含空格等特殊字符,此时要用""(引号)来引用,如 "phone number":123456 
    其实在JS中,数组的本质是一个对象,对象本身也是一个数组。所以, obj1.name 和 obj1["name"] 是同一个引用。 
    我们还可以通过JSON符号的嵌套来定义复杂的S对象: 

var people = [ 
    { 
        name:"longbill", 
        age:18 
    }, 
    { 
        name:"neal", 
        age:19 
    }, 
    { 
        name:"glocklee", 
        age:17 
    } 
];
//这个应该看的懂吧~~ 
大部分XML文档都可以用JSON来表达: 

<?xml version="1.0"?> 
<root> 
  <book> 
    <name>Ju love</name> 
    <price>$15</price> 
  </book> 
  <book> 
    <name>Javascrip</name> 
    <price>$25</price> 
  </book> 
</root>

如果用JSON就可以表达为: 


root: 

  { 
     name:"Ju love", 
     price:"$15" 
  }, 
  { 
     name:"Javascript", 
     price:"$25" 
  } 
]}

是不是简化很多? 

    而且客户端JS处理起来也很简单,只要用执行字符串函数 "eval" 就可以将JSON信息提取出来,而如果是XML文档,那就不的不用大量的标准DOM操作来提取其中的数据。如: 

//已经用AJAX从服务端下载了一个JSON文件(字符串),保存在变量 json 里 
eval("var myvar = "+json); 
//这样,JSON里的信息就表达在myvar这个变量里了。
缺点:一旦JSON的格式错误,将导致服务端JS系统错误,甚至崩溃。 
   解决办法: 
   最好在eval之前使用try(试探执行),如 

//已经用AJAX从服务端下载了一个JSON文件(字符串),保存在变量 json 里 
try { 
    eval("var myvar = "+json); 
} catch(e) { alert('json syntax error!'); } 
//这样,即使JSON格式错误,也只会弹出一个提示框,而不会抛出一个脚本错误!

Javascript 相关文章推荐
jQuery UI 应用不同Theme的办法
Sep 12 Javascript
使用apply方法实现javascript中的对象继承
Dec 16 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
jquery预加载图片的方法
May 27 Javascript
js实现表单Radio切换效果的方法
Aug 17 Javascript
HTML5 canvas 9绘制图片实例详解
Sep 06 Javascript
JavaScript SHA-256加密算法详细代码
Oct 06 Javascript
jQuery实现验证码功能
Mar 17 Javascript
JavaScript 实现 Tab 点击切换实例代码
Mar 25 Javascript
使用异步组件优化Vue应用程序的性能
Apr 28 Javascript
解决layui 三级联动下拉框更新时回显的问题
Sep 03 Javascript
微信小程序 wx:for遍历循环使用实例解析
Sep 09 Javascript
js右键菜单效果代码
Jul 21 #Javascript
$()JS小技巧
Jul 21 #Javascript
IE 缓存策略的BUG的解决方法
Jul 21 #Javascript
用JS实现的一个include函数
Jul 21 #Javascript
代码精简的可以实现元素圆角的js函数
Jul 21 #Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
Jul 21 #Javascript
用javascript实现读取txt文档的脚本
Jul 20 #Javascript
You might like
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
PHP的几个常用加密函数
2016/02/03 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
js防止表单重复提交实现代码
2012/09/05 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
python实现给微信公众号发送消息的方法
2017/06/30 Python
Python中super函数用法实例分析
2019/03/18 Python
python队列Queue的详解
2019/05/10 Python
python 杀死自身进程的实现方法
2019/07/01 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
python中time库的实例使用方法
2019/10/31 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
生产部统计员岗位职责
2014/01/05 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
2015年考研复习计划
2015/01/19 职场文书
廉洁自律个人总结
2015/02/14 职场文书
安全生产会议制度
2015/08/06 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书