2011年1月12日 星期三

PEAR Services_JSON - PHP json_decode 解碼解不出來 可試試

今天在用 PHP 的 json_decode 解某個 json code 時,一直解不出來,試了快八個小時。

只好求助於 Google 大神翻啊找的,才知道原來 PHP 的 json_decode 函式在許多狀況下都無法解碼。況且我的 PHP 版本是 5.1.6 的,沒有 json_last_error() 可以看錯誤代碼,也不知到底是那裡有問題?

後來發現了一套更方便的工具 PEAR 的 Services_JSON

PEAR Services_JSON 是一個套件,但事實上我們如果只是要取用 Services_JSON 的解碼功能的話,完全不用管他的安裝;把 PEAR 的 Services_JSON下載 下來,解壓縮後裡面有個 JSON.php,放到我們寫 PHP 的地方,即可︰
<?php
  include 'JSON.php';
  $json = new Services_JSON();
  $data = $json->decode($str);
?>
有沒有很簡單,以上的範例是用物件的方式。如果我們想要像和 json_decode("$str",true) 一樣,以陣列( associative arrays )的方式來表示,多帶一個 SERVICES_JSON_LOOSE_TYPE 參數就可以︰
<?php
  include 'JSON.php';
  $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
  $data = $json->decode($str);
?>