介紹如何在 PHP 中使用 json_encode 與 json_decode 產生或讀取 JSON 格式的資料。
產生 JSON 格式資料
PHP 的 json_encode 函數可以將各種的 PHP 物件自動轉換成對應的 JSON 格式資料:
<?php
# 原始資料
$person = array('name' => 'Mary', 'age' => 23);
# 以 JSON 格式輸出
echo json_encode($person);
?>
{"name":"Mary","age":23}更複雜的 PHP 物件也都可以自動轉換:
<?php
# 原始資料
$list = array();
array_push($list, array('name' => 'Mary', 'age' => 23));
array_push($list, array('name' => 'John', 'age' => 19));
# 以 JSON 格式輸出
echo json_encode($list);
?>
[{"name":"Mary","age":23},{"name":"John","age":19}]自動檢查並轉換數值資料
在 PHP 中如果有數值的資料以文字的方式儲存,在轉為 JSON 格式時,預設也會保持原有的資料格式:
<?php
# 原始資料
$person = array('name' => 'Mary', 'age' => '23');
# 以普通 JSON 格式輸出
echo json_encode($person);
?>
{"name":"Mary","age":"23"}若想要讓數值的資料自動轉換為正確的型態,可以加上 JSON_NUMERIC_CHECK 參數:
<?php
# 自動檢查並轉換數值資料
echo json_encode($person, JSON_NUMERIC_CHECK);
?>
{"name":"Mary","age":23}這樣轉換出來的 JSON 資料會更好處理。
讀取 JSON 格式資料
若要讀取 JSON 格式資料,可以使用 PHP 的 json_decode 函數:
<?php
# JSON 資料
$json = '[{"name":"Mary","age":23},{"name":"John","age":19}]';
# 將 JSON 格式資料轉換為 PHP 物件
$obj = json_decode($json, true);
# 檢視結果
echo $obj[0]["name"] . ":" . $obj[0]["age"];
?>
Mary:23
