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

掌握 PHP JSON 應用:從基礎編解碼到跨域資料交換

     編輯:PHP 相關知識

為什麼選 JSON?

輕量、原生支援 JavaScript 物件語法、解析速度快、無需複雜 XML 解析器,是 AJAX 時代最佳資料交換格式。

PHP 內建函數(PHP 5.2+)

  • json_encode($value, $flags = 0, $depth = 512):PHP 變數 → JSON 字串。
  • json_decode($json, $assoc = false, $depth = 512, $options = 0):JSON 字串 → PHP 物件(預設)或關聯陣列($assoc=true)。

編碼範例

<?php
$arr = [
    'name' => '陳毅鑫',
    'nick' => '深空',
    'contact' => [
        'email' => 'shenkong at qq dot com',
        'website' => 'https://www.chenyixin.com'
    ]
];
$json = json_encode($arr, JSON_UNESCAPED_UNICODE);
echo $json;
// {"name":"陳毅鑫","nick":"深空","contact":{"email":"shenkong at qq dot com","website":"https://www.chenyixin.com"}}
?>

解碼範例

$obj = json_decode($json);        // stdClass 物件
echo $obj->name;                  // 陳毅鑫
$arr = json_decode($json, true);  // 關聯陣列
echo $arr['contact']['email'];

關鍵注意:編碼必須為 UTF-8

若 PHP 檔案/資料庫為 GBK,中文會編碼為 null。解決:iconv('GBK', 'UTF-8', $str) 或全站統一 UTF-8。

前端 JavaScript 使用

<script>
var data = ; // 直接賦值成 JS 物件
console.log(data.nick); // 深空
// 或 AJAX 取得
fetch('api.php').then(r => r.json()).then(data => { ... });
</script>

進階應用:JSONP 跨域

原理:後端輸出 callbackName(jsonData),前端動態建立 <script src="api.php?callback=fn">。

<?php
// profile.php
$arr = ['name' => '陳毅鑫', 'nick' => '深空'];
echo $_GET['callback'] . '(' . json_encode($arr, JSON_UNESCAPED_UNICODE) . ')';
?>

// index.html
function getProfile(data) { document.getElementById('nick').textContent = data.nick; }
<script src="profile.php?callback=getProfile"></script>

注意:JSONP 僅支援 GET,有安全風險(CSRF/XSS),現代專案首選 CORS(Access-Control-Allow-Origin)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved