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

JSON 兩大核心結構:物件與陣列深度解析與 PHP 實作對照

     編輯:PHP 綜合知識

JSON(JavaScript Object Notation)以輕量級、跨語言、易讀寫特性成為主流資料交換格式。其核心只有兩種結構——物件與陣列,對應 PHP 的關聯陣列與索引陣列。本文透過規範定義、範例對照、PHP 編解碼行為,釐清兩者差異與轉換邏輯。

JSON 語法規範速查

  1. 並列資料以逗號 , 分隔
  2. 鍵值對以冒號 : 映射
  3. 陣列用方括號 [] 表示(有序集合)
  4. 物件用大括號 {} 表示(無序鍵值集合)

PHP 陣列轉 JSON 結構對照表

<?php
$arr1 = array(111, 'aaa', 'bbb');                    // 索引陣列
$arr2 = array('a' => 'aaa', 'b' => 222);            // 關聯陣列
$arr3 = array('a' => 'aaa', 'other' => array('bbb', 1111)); // 巢狀混合

echo json_encode($arr1); // [111,"aaa","bbb"]          → JSON 陣列
echo json_encode($arr2); // {"a":"aaa","b":222}        → JSON 物件
echo json_encode($arr3); // {"a":"aaa","other":["bbb",1111]} → 物件含陣列
?>

核心判斷邏輯

  • 連續數字鍵從 0 開始、無間隔、遞增 → JSON 陣列 []
  • 字串鍵、非連續數字鍵、鍵序不連續 → JSON 物件 {}

PHP json_decode 回傳類型控制

$json = '{"a":"aaa","other":["bbb",1111]}';

$obj = json_decode($json);        // stdClass 物件
$arr = json_decode($json, true);  // 關聯陣列(第二參數 true)

PHP 內建支援說明

  • json_encode 僅支援 UTF-8 編碼輸入
  • json_decode 預設回傳物件,加 true 回傳關聯陣列
  • PHP 5.4+ 新增 JSON_UNESCAPED_UNICODE、JSON_FORCE_OBJECT 等選項

實務應用場景

場景建議結構PHP 寫法
API 回傳列表資料陣列 []$list = array_values($data); 確保索引重排
API 回傳單筆實體物件 {}(object)$data 或 JSON_FORCE_OBJECT
前端元件需固定欄位順序物件 {}明確定義鍵名順序,避免索引陣列語意模糊

總結

理解 JSON 物件與陣列的語意差異,並掌握 PHP 陣列鍵名如何影響輸出結構,是前後端協作無誤的關鍵。建立統一的資料結構規範(如:列表必為陣列、實體必為物件),可大幅減少溝通成本與解析錯誤。

延伸閱讀:專題《PHP 字串用法總結》、《PHP 陣列操作技巧大全》。

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