在PHP中,我們經常需要將JSON轉換為陣列進行處理。由於JSON格式相對簡潔易懂,成為了前後端傳輸資料的常用格式,因此在PHP中,有一些函數可以幫助我們將JSON轉換為陣列。
本文將介紹PHP中常用的幾個JSON轉數組函數。
json_decode()函數是PHP中用於將JSON字串轉換成PHP陣列或物件的基本函數。它的語法如下:
mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
其中:
範例程式碼:
$json_str = '{"name":"Tom","age":20,"hobby":["reading","writing"]}'; $arr = json_decode($json_str, TRUE); print_r($arr);
輸出結果:
Array ( [name] => Tom [age] => 20 [hobby] => Array ( [0] => reading [1] => writing ) )
透過json_decode()函數,我們成功將JSON字串轉換為了陣列。
在PHP 7.3以上版本中,我們可以使用JSON_THROW_ON_ERROR選項,讓json_decode()函數在轉換出錯時拋出異常。範例程式碼如下:
$json_str = '{"name":"Tom","age":20,"hobby:["reading","writing"]}'; try { $arr = json_decode($json_str, TRUE, 512, JSON_THROW_ON_ERROR); print_r($arr); } catch (JsonException $e) { echo 'JSON错误:' . $e->getMessage(); }
輸出結果:
JSON错误:Syntax error
在本例中,由於JSON字串格式有誤,json_decode()函數拋出了異常,並提示了錯誤訊息。
在使用json_decode()函數轉換JSON字串時,有時會存在解析錯誤,此時我們可以使用json_last_error_msg()函數取得錯誤資訊.範例程式碼如下:
$json_str = '{"name":"Tom","age":20,"hobby":["reading","writing"'; $arr = json_decode($json_str, TRUE); if (json_last_error() === JSON_ERROR_NONE) { print_r($arr); } else { echo 'JSON错误:' . json_last_error_msg(); }
輸出結果:
JSON错误:Syntax error
在本例中,由於字串格式錯誤,json_last_error_msg()傳回了錯誤訊息。
在PHP中,我們也可以將PHP陣列轉換為JSON格式字串,這需要使用json_encode()函數。它的語法如下:
string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
其中:
範例程式碼如下:
$arr = array('name' => 'Tom', 'age' => 20, 'hobby' => array('reading', 'writing')); $json_str = json_encode($arr, JSON_UNESCAPED_UNICODE); echo $json_str;
輸出結果:
{"name":"Tom","age":20,"hobby":["reading","writing"]}
透過json_encode()函數,我們成功將PHP陣列轉換為了JSON字串。
總結:
在PHP中,我們可以使用json_decode()函數將JSON字串轉換為陣列或對象,也可以使用json_encode()函數將PHP陣列轉換為JSON格式的字串。一般情況下,使用預設選項即可,若有需要,可以使用相關選項來進行配置。在解析或編碼JSON時,我們也可以使用相關函數來取得錯誤訊息,以便更好地進行處理。
以上是php json轉數組函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!