介紹如何在 PHP 中使用 json_encode
與 json_decode
產生或讀取 JSON 格式的資料。
PHP 的 json_encode
函數可以將各種的 PHP 物件自動轉換成對應的 JSON 格式資料:
# 原始資料 $person = array('name' => 'Mary', 'age' => 23); # 以 JSON 格式輸出 echo json_encode($person);
{"name":"Mary","age":23}
更複雜的 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 格式時,預設也會保持原有的資料格式:
# 原始資料 $person = array('name' => 'Mary', 'age' => '23'); # 以普通 JSON 格式輸出 echo json_encode($person);
{"name":"Mary","age":"23"}
若想要讓數值的資料自動轉換為正確的型態,可以加上 JSON_NUMERIC_CHECK
參數:
# 自動檢查並轉換數值資料 echo json_encode($person, JSON_NUMERIC_CHECK);
{"name":"Mary","age":23}
這樣轉換出來的 JSON 資料會更好處理。
若要讀取 JSON 格式資料,可以使用 PHP 的 json_decode
函數:
# 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