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 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
原生javascript兼容性测试实例
Jul 01 Javascript
jquery防止重复执行动画避免页面混乱
Apr 22 Javascript
JavaScript中的比较操作符&gt;、=、
Dec 31 Javascript
AngularJS基础学习笔记之表达式
May 10 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
Aug 24 Javascript
Angular和百度地图的结合实例代码
Oct 19 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
js 监控iframe URL的变化实例代码
Jul 12 Javascript
Angular 封装并发布组件的方法示例
Apr 19 Javascript
如何用JS模拟实现数组的map方法
Jul 30 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
Nov 05 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
2019十大人气国漫
2020/03/13 国漫
php数字转汉字代码(算法)
2011/10/08 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
Vuex提升学习篇
2018/01/11 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python深入学习之上下文管理器
2014/08/31 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Django接收自定义http header过程详解
2019/08/23 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Python读写锁实现实现代码解析
2020/11/28 Python
德国高性价比网上药店:medpex
2017/07/09 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
控制工程专业个人求职信
2013/09/25 职场文书
集中采购方案
2014/06/10 职场文书
打架检讨书
2015/01/27 职场文书
北京导游词
2015/02/12 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
PYTHON InceptionV3模型的复现详解
2022/05/06 Python
服务器间如何实现文件共享
2022/05/20 Servers