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 相关文章推荐
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
Jan 07 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
JavaScript之生成器_动力节点Java学院整理
Jun 30 Javascript
深入掌握 react的 setState的工作机制
Sep 27 Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
React.Js添加与删除onScroll事件的方法详解
Nov 03 Javascript
Vue组件开发技巧总结
Mar 04 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 Javascript
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
JavaScript函数详解
2014/11/17 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
numpy基础教程之np.linalg
2019/02/12 Python
python 获取等间隔的数组实例
2019/07/04 Python
详解python中的模块及包导入
2019/08/30 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
学校献爱心活动总结
2014/07/08 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
锅炉工岗位职责
2015/02/13 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
python库sklearn常用操作
2021/08/23 Python
python中validators库的使用方法详解
2022/09/23 Python