2015年8月19日 星期三

PHP的JSON轉換 (json encode / json decode)


PHP在5.2版之後已有內建的JSON轉換函數
就和base64_encode, base64_decode 一樣方便簡單使用

php的內建json方法就是 json_encode , json_decode


json_encode可以把PHP的陣例完美的轉換成json format
範例如下
 
 $data = array();
 $data['list1'] = array( 1 => 'test', 2 =>'test2', 3 => 'test3');
 $data['url'] = 'myandroid.tw';
 echo json_encode($data);
 
 


輸出結果如下:
 {"list1":{"1":"test","2":"test2","3":"test3"},"url":"myandroid.tw"}
 


json_decode是將json轉成PHP Array或是Object的方式
傳統上會用 (第二個參數是true)
json_decode('{"list1":{"1":"test"},"url":"myandroid.tw"}', true); 

這樣會回傳成php的array, var_dump如下
 array(2) {
  ["list1"]=>
  array(1) {
    [1]=>
    string(4) "test"
  }
  ["url"]=>
  string(12) "myandroid.tw"
}
 


如果第二個參數是false,就會變成物件的方式

差別如下 ( echo為同樣取得url值 ):
$array = json_decode('{"list1":{"1":"test"},"url":"myandroid.tw"}', true);
echo $array['url'];


$obj = json_decode('{"list1":{"1":"test"},"url":"myandroid.tw"}', false);
echo $obj->url;
 


善用以上方法,就可以和Android/iOS或是AJAX等交換資料了