PHP6 先修班 JSON实例代码

  它是基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集

  JSON 主要利用了成對的 {} 來包住各個object(物件),用成對的 [] 來包各個array(陣列),

  用成對的 "" 來包住各字串,用逗號來區隔各變數而資料型態有 string, number, array, object

  下面簡單的JSON格式,敘述了一個 object json 擁有一個成員變數,這個成員變數中有含有三個物件

  复制内容到剪贴板代码:

  var json = {

  'query' : [

  {'id':'1','type':'a','title':'PHP 5.2.0 的新功能 JSON decoder & encoder'},

  {'id':'2','type':'b','title':'JSON 全稱 JavaScript Object Notation'},

  {'array': ['A', 'B','C', 'D', 'E']}

  ]

  };

  如此,我們可以獲得一個叫做 json 的Object,而這個json Object中包含一個獨立的成員 query

  而query包含一個Array ,這個Array中又含了三個Object,前面二個Object含有三個成員

  id,type,title,而最後一個Object array 包含一個陣列,如此解釋還明白吧?

  但是要怎麼用呢?

  很簡單

  alert('I have ' +json.query.length + ' object.');

  //alert I have 3 object.

  alert('type='+json.query[1].type+'\r\ntitle'+json.query[1].title);

  //alert type=b title=JSON 全稱 JavaScript Object Notation

  alert('陣列索引3='+json.query[2].array[3]);

  //alert 陣列索引3=D

  這樣操作資料時更簡便,不需要和複雜的DOM打交道,所需要的資料可以很輕鬆的取得

  例如上面的例子 json.query[ i ].title 如此就可以取得第i筆的title內含的值

  PHP的發展是很迅速,當程式界對JSON還一知半解時或者全然不知何為JSON時

  PHP已經在最新的版本5.2.0中納入核心,並且預設狀態是啟用,相較於其他的Script語言

  PHP可謂一馬當先,在5.2.0版本中為JSON實作了兩個函數 json_decode() 和 json_encode()

  前者是將JSON格式的字串還原成PHP原生的陣列

  後者則是將PHP原生陣列編譯成JSON格式的字串

  不過,由於Javascript支援Unicode,如果在存取資料庫時使用非Ascii的字元,如中、日、韓

  需要將字元編碼轉換成UTF8,不然經過json_encode()後的字串會是亂碼

  ========================================================

  經過上一篇簡單介紹JOSN後

  本篇就來實作如何使用JOSN

  下面範例使用需要使用MySQL4.1以上版本

  編碼全程採用utf8

  承接上一篇的資料格式,表中共有三個欄位id,type,title

  資料表規格如下

  复制内容到剪贴板代码:

  CREATE TABLE `news` (

  `id` int(10) unsigned NOT NULL auto_increment,

  `type` varchar(255) NOT NULL default '',

  `title` varchar(64) NOT NULL default '',

  PRIMARY KEY (`id`)

  ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

  复制内容到剪贴板代码:

  <?php

  //建立連線

  $conn = mysqli_connect("localhost", 'root', '')or die('連不上資料庫');

  //選擇資料庫

  mysqli_select_db($conn,'mydata') or die('不能選資料庫');

  //設定連線編碼規則,不懂上google找

  mysqli_query($conn,'SET NAMES 'utf8'');

  //取出資料

  $results = mysqli_query($conn,'SELECT id,type,title FROM news');

  //Josn字串

  $json = '';

  //因為是範例,所以自行控制迴圈

  $i=0;

  while($row = mysqli_fetch_assoc($results))

  {

  $i++;

  $json .= json_encode($row);

  //資料表中只放三筆資料,所以在第三筆時不需要在尾巴加上 ",",記得,最後一筆資料不用加上","

  if ($i<3)

  {

  $json .= ",";

  }

  }

  //將資料包進陣列中

  $json = '{"query":[ '.$json.']}';?>

  <!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="zh-tw" lang="zh-tw" >

  <head>

  <title>Json範例</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta http-equiv="Pragma" content="no-cache" />

  <meta http-equiv="Expires" content="-1" />

  <meta http-equiv="Cache-Control" content="no-cache" />

  <meta name="generator" content="mamba" />

  </head>

  <body>

  <script type="text/javascript">

  var json = <?php echo $json?>;

  alert('I have ' +json.query.length + ' object.');

  alert('type='+json.query[1].type+'rntitle'+json.query[1].title);

  //上一篇簡介中使用過

  </script>

  還原Json<br>

  <?php

  //將字串解碼

  $s_JSON_Decoded = json_decode($json,true);

  //取回資料

  foreach ($s_JSON_Decoded as $row)

  {

  foreach ($row as $rowa)

  {

  echo $rowa['title']."<br>";

  }

  }

  ?>

  </body>

  </html>

  經過簡單的演練後

  相信大家對JSON這玩意有更深一層的瞭解

  當然JSON的應用不只是範例中那麼簡單

  有興趣一起研究吧