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 相关文章推荐
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 Javascript
js函数调用常用方法详解
Dec 03 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
Jun 27 Javascript
30个经典的jQuery代码开发技巧
Dec 15 Javascript
JS实现黑色大气的二级导航菜单效果
Sep 18 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
Dec 08 Javascript
简单实现JS计算器功能
Dec 21 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
Jan 14 Javascript
JavaScript实现的XML与JSON互转功能详解
Feb 16 Javascript
使用Vant完成Dialog弹框案例
Nov 11 Javascript
关于对TypeScript泛型参数的默认值理解
Jul 15 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解析xml方法实例详解
2015/05/12 PHP
10个php函数实用却不常见
2015/10/13 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Python中变量交换的例子
2014/08/25 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
学生思想表现的评语
2014/01/30 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
个人授权委托书样本
2014/09/13 职场文书
政协会议宣传标语
2014/10/09 职场文书
检讨书范文1000字
2015/01/28 职场文书
法院执行局工作总结
2015/08/11 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
担保书怎么写 ?
2019/04/22 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书