JSON(JavaScript Object Notation)是一種輕量級資料交換格式,結構類似 PHP 陣列,易於人閱讀、機器解析。它作為 PHP 後端與 JavaScript 前端的資料橋樑,比 XML 更簡潔高效。
json_encode():將 PHP 變數(陣列/物件)編碼為 JSON 字串。json_decode():將 JSON 字串解碼為 PHP 物件(預設)或陣列(第二參數設 true)。<?php
$arr = array(
'name' => '陳毅鑫',
'nick' => '深空',
'contact' => array(
'email' => 'shenkong at qq dot com',
'website' => 'https://www.devdao.com',
)
);
$json_string = json_encode($arr);
echo $json_string;
// 輸出: {"name":"\u9648\u6bc5\u946b","nick":"\u6df1\u7a7a","contact":{"email":"shenkong at qq dot com","website":"http:\/\/www.devdao.com"}}
?>
注意:json_encode 僅支援 UTF-8 編碼。若原始碼為 GB2312/Big5,需先用 iconv 或 mb_convert_encoding 轉為 UTF-8 再編碼,否則中文會變空值。
<?php
$obj = json_decode($json_string);
print_r($obj);
// 訪問屬性: $obj->name
// 若需轉為陣列
$arr = (array) $obj;
// 或
$arr = json_decode($json_string, true);
print_r($arr);
?>
<script>
var arr = {"name":"\u9648\u6bc5\u946b","nick":"\u6df1\u7a7a","contact":{"email":"shenkong at qq dot com","website":"http:\/\/www.devdao.com"}};
alert(arr.name); // 直接以物件屬性存取
</script>
伺服端回傳 JSON 字串而非 XML,前端 eval() 或 JSON.parse() 即可直接操作資料,極大簡化 AJAX 資料處理邏輯。