JSON与PHP开发摘要

JSON(Javascript Object Notation),即JavaScript对象表示,是由资深软件工程师Douglas Crockford开发的。它是一种轻量级的数据格式,基于JavaScript语法子集,即数组和对象表示。因为它使用的是JavaScript语法,所以JSON定义可以包含在JavaScript文件中,对其的访问无需通过基于XML的语言来额外解析。目前WEB通信中,在与服务器之间的往返通信中不是使用纯文本格式就是XML,而JSON则为AJAX通信提供了一种新的选择。JSON语法官方网站

JSON和JavaScript对象间的解码和编码
实现JSON和JavaScript对象之间解码和编码,首先需要一个工具程序json2.js
编码方法:JSON.parse();
解码方法:JSON.stringify();

演示代码:

 1 var oCar = new Object(); //新建轿车对象
 2 oCar.doors = 4;
 3 oCar.color = "red";
 4 oCar.year = 1995;
 5 oCar.drivers = new Array("xzw","michael");
 6 var x = JSON.stringify(oCar); //将JavaScript对象转换成JSON字符串
 7 
 8 document.write(x+"<br/>");
 9 
10 var oObject = JSON.parse(x); //将JSON代码解析还原成JavaScript对象
11 document.write(oObject.drivers[0]);

服务器端(PHP)JSON工具
PHP5.2内置了JSON的支持,如果不清楚自己的PHP是否支持,可以用phpinfo查看一下。内置的编码方法:json_encode(),解码方法:json_decode()
以下是PHP中JSON编码和解码的例子:

 1 class Person{
 2     var $age;
 3     var $hairColor;
 4     var $name;
 5     var $siblingName;
 6     function Person($age,$name,$hairColor){
 7         $this->name = $name;
 8         $this->age = $age;
 9         $this->hairColor = $hairColor;
10         $this->siblingName = array();
11     }
12 }
13 
14 $oPerson = new Person("23","二毛","red");
15 $oPerson->siblingName[0= "大毛";
16 $oPerson->siblingName[1= "小毛";
17 
18 $sJSONText = json_encode($oPerson); //编码
19 print ($sJSONText);
20 $oPerson = json_decode($sJSONText); //解码
21 
22 print("<p>Name:".$oPerson->name."</p>");
23 print("<p>Age:".$oPerson->age."</p>");
24 print("<p>hairColor:".$oPerson->hairColor."</p>");
25 print("<p>Sibling Names:</p><ul>");
26 for($i=0;$i<count($oPerson->siblingName);$i++){
27     print("<li>".$oPerson->siblingName[$i]."</li>");
28 }
29 print("</ul>");

如果手头的PHP没有内嵌JSON实现,可以去网上下载一个JSON.PHP。通过这种方式,使用前需要先创建JSON实例。

1     //include JSON-PHP and instantiate the object
2     require_once("JSON.php");
3     $oJSON = new JSON();

通过引用JSON.php改写前面的二毛兄弟例子:

 1 require_once("JSON.php");
 2 $oJSON = new JSON();
 3 
 4 class Person{
 5     var $age;
 6     var $hairColor;
 7     var $name;
 8     var $siblingName;
 9     function Person($age,$name,$hairColor){
10         $this->name = $name;
11         $this->age = $age;
12         $this->hairColor = $hairColor;
13         $this->siblingName = array();
14     }
15 }
16 
17 $oPerson = new Person("23","二毛","red");
18 $oPerson->siblingName[0= "大毛";
19 $oPerson->siblingName[1= "小毛";
20 
21 //$sJSONText = json_encode($oPerson); //编码
22 $sJSONText = $oJSON->encode($oPerson);
23 print ($sJSONText);
24 //$oPerson = json_decode($sJSONText); //解码
25 $oPerson = $oJSON->decode($sJSONText);
26 
27 print("<p>Name:".$oPerson->name."</p>");
28 print("<p>Age:".$oPerson->age."</p>");
29 print("<p>hairColor:".$oPerson->hairColor."</p>");
30 print("<p>Sibling Names:</p><ul>");
31 for($i=0;$i<count($oPerson->siblingName);$i++){
32     print("<li>".$oPerson->siblingName[$i]."</li>");
33 }
34 print("</ul>");
35 

一切就这么简单。
JSON格式与XML相比,由于不需要与开始标签(opening tag)匹配的结束标签(closing tag),因此代码精简的很多。适当的运用将大大提高数据交换效率,值得一试。

posted on 2009-01-18 10:47  徐秀才  阅读(3067)  评论(0编辑  收藏  举报

导航