php如何生成json數據?解析json數據有哪些常用方法?

php生成和解析json數據主要通過json_encode()和json_decode()函數實現。一、生成json數據使用json_encode(),常用參數包括json_unescaped_unicode防止中文轉義,json_pretty_print格式化輸出對象需實現jsonserializable接口才能保留結構。二、解析json數據有三種方式:1. 使用json_decode($json, true)轉為關聯數組;2. 不傳第二個參數或設為false轉為stdclass對象;3. 處理嵌套結構時需正確訪問層級元素。三、常見問題處理:1. json_encode失敗可能因非utf-8字符或不可序列化類型,可用json_last_error()排查;2. json_decode失敗返回NULL,常見原因包括格式錯誤或非字符串輸入,建議用在線工具驗證json格式并檢查輸入類型。掌握這兩類函數的使用,可應對php中大部分json處理需求。

php如何生成json數據?解析json數據有哪些常用方法?

生成 JSON 數據和解析 JSON 數據在 PHP 中是非常常見的操作,尤其是前后端分離開發或者 API 接口開發中。PHP 提供了內置函數來處理 JSON 格式的數據,使用起來非常方便。


一、如何用 PHP 生成 JSON 數據?

PHP 使用 json_encode() 函數將數組或對象轉換為 JSON 格式的字符串。

$data = [     'name' => '張三',     'age' => 25,     'is_student' => false, ];  echo json_encode($data, JSON_UNESCAPED_UNICODE);

上面的代碼會輸出:

立即學習PHP免費學習筆記(深入)”;

{"name":"張三","age":25,"is_student":false}
  • JSON_UNESCAPED_UNICODE 是常用選項,防止中文被轉義成 Unicode。
  • 如果你希望格式化輸出(比如調試時),可以加上 JSON_PRETTY_PRINT。

需要注意的是,如果傳入的是對象,默認會轉換成關聯數組形式。如果你需要保留對象結構,可能需要自己實現 JsonSerializable 接口。


二、PHP 解析 JSON 數據的幾種方式

解析 JSON 主要使用 json_decode() 函數,它可以把 JSON 字符串轉換成 PHP 的數組或對象。

1. 轉換成關聯數組

默認情況下,json_decode() 返回的是對象。如果你想返回數組,第二個參數設為 true 即可:

$json_str = '{"name":"李四","age":30}'; $array = json_decode($json_str, true);  print_r($array); // 輸出:Array ( [name] => 李四 [age] => 30 )

2. 轉換成對象

如果不加第二個參數,或者設為 false,就會返回一個 stdClass 對象:

$obj = json_decode($json_str); echo $obj->name; // 輸出:李四

3. 處理深層嵌套結構

當 JSON 結構比較復雜時,例如嵌套數組或對象,也要注意訪問方式是否正確。比如下面這個例子:

$json_str = '[{"id":1,"tags":["a","b"]},{"id":2,"tags":["c"]}]'; $data = json_decode($json_str, true);  foreach ($data as $item) {     echo "ID: {$item['id']}, Tags: " . implode(',', $item['tags']) . "n"; }

輸出:

ID: 1, Tags: a,b ID: 2, Tags: c

這里可以看到,只要結構清晰,遍歷和訪問都很直觀。


三、常見問題和注意事項

1. JSON 編碼失敗怎么辦?

有時候 json_encode() 會返回 false,這說明編碼失敗。常見原因包括:

  • 數組中有非 UTF-8 編碼的字符(如 GBK)。
  • 數組中存在資源類型(Resource)或閉包(closure)等不可序列化的數據。

解決方法

  • 確保數據是 UTF-8 編碼。
  • 可以使用 json_last_error() 查看錯誤信息。
if (json_last_error() !== JSON_ERROR_NONE) {     echo json_last_error_msg(); }

2. JSON 解析失敗怎么排查?

如果 json_decode() 返回 null,說明解析失敗。可能是:

  • JSON 字符串格式不正確(比如引號沒閉合、逗號多余等)。
  • 輸入不是字符串。

建議:


基本上就這些。PHP 處理 JSON 很簡單,但細節上要注意數據格式和類型,否則容易出錯。掌握好 json_encode 和 json_decode 的使用,就能應對大多數場景了。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享