首頁 >後端開發 >PHP問題 >php json轉數組函數

php json轉數組函數

王林
王林原創
2023-05-05 21:25:06492瀏覽

在PHP中,我們經常需要將JSON轉換為陣列進行處理。由於JSON格式相對簡潔易懂,成為了前後端傳輸資料的常用格式,因此在PHP中,有一些函數可以幫助我們將JSON轉換為陣列。

本文將介紹PHP中常用的幾個JSON轉數組函數。

  1. json_decode()

json_decode()函數是PHP中用於將JSON字串轉換成PHP陣列或物件的基本函數。它的語法如下:

mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )

其中:

  • $json:需要轉換的JSON字串。
  • $assoc:如果該參數為TRUE,則傳回陣列;如果為FALSE,則傳回Object物件。
  • $depth:指定最大深度,用於控制遞歸呼叫的深度。預設值為512。
  • $options:JSON編碼選項,可以指定轉換後的格式。

範例程式碼:

$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字串轉換為了陣列。

  1. json_decode()與JSON_THROW_ON_ERROR結合使用

在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()函數拋出了異常,並提示了錯誤訊息。

  1. json_last_error_msg()

在使用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()傳回了錯誤訊息。

  1. json_encode()

在PHP中,我們也可以將PHP陣列轉換為JSON格式字串,這需要使用json_encode()函數。它的語法如下:

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

其中:

  • $value:需要轉換為JSON格式的PHP變數。
  • $options:可選。 JSON 編碼選項。
  • $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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn