介紹如何在 PHP 中使用 json_encodejson_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