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),因此代码精简的很多。适当的运用将大大提高数据交换效率,值得一试。

你可能感兴趣的:(json)