首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP JSON 編碼與解碼完整指南

     編輯:PHP 相關知識

核心函數

  • json_encode($value, $flags = 0, $depth = 512):將 PHP 變數編碼為 JSON 字串。
  • json_decode($json, $assoc = false, $depth = 512, $options = 0):解碼 JSON 字串,`$assoc=true` 回傳關聯陣列,否則回傳 `stdClass` 物件。
  • json_last_error() / json_last_error_msg():檢查最近一次編碼/解碼錯誤。

基本範例

<?php
$books = [
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => ['key4' => 'value4', 'key5' => 'value5']
];

$json = json_encode($books, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
echo "編碼後:\n$json\n\n";

$decoded = json_decode($json, true);
echo "解碼後(關聯陣列):\n";
print_r($decoded);
?>

常用旗標

旗標說明
JSON_HEX_TAG將 `<` `>` 轉為 `\u003C` `\u003E`
JSON_HEX_APOS將 `'` 轉為 `\u0027`
JSON_HEX_QUOT將 `"` 轉為 `\u0022`
JSON_HEX_AMP將 `&` 轉為 `\u0026`
JSON_UNESCAPED_UNICODE不將 Unicode 字元轉義(中文直接顯示)
JSON_UNESCAPED_SLASHES不轉義 `/`
JSON_PRETTY_PRINT格式化縮排輸出
JSON_NUMERIC_CHECK將數字字串轉為數值型別
JSON_PRESERVE_ZERO_FRACTION保留浮點數的 `.0`

實務範例:API 回應

<?php
header('Content-Type: application/json; charset=utf-8');

$data = [
    'error_code' => 0,
    'message' => '成功',
    'data' => [
        ['id' => 1, 'name' => '產品A', 'price' => 199.00],
        ['id' => 2, 'name' => '產品B', 'price' => 299.50]
    ]
];

// 錯誤處理
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
if ($json === false) {
    http_response_code(500);
    echo json_encode(['error_code' => 500, 'message' => 'JSON 編碼失敗: ' . json_last_error_msg()]);
    exit;
}
echo $json;
?>

解碼 Unicode 逸出字串

<?php
$jsonStr = '{"error":"\\u4f20\\u5165\\u7684\\u53c3\\u6578\\u9519\\u8aa4"}';
$obj = json_decode($jsonStr);
echo $obj->error; // 輸入的參數錯誤
?>

錯誤處理最佳實踐

<?php
function safeJsonDecode($json, $assoc = true) {
    $result = json_decode($json, $assoc);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new RuntimeException('JSON 解碼失敗: ' . json_last_error_msg());
    }
    return $result;
}
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved