在使用 PHP 陣列轉換為 JSON 資料的過程中,有時會遇到 JSON 字串中還包含有雙引號的情況。這種情況在實際開發中非常常見,解決起來也非常簡單。
一般情況下,將 PHP 陣列轉換為 JSON 字串,可以使用 PHP 內建函數 json_encode()
來完成。這個函數可以把一個 PHP 陣列轉換成一個 JSON 字串。例如,下面的程式碼將一個包含了一些資料的PHP 陣列轉換為JSON 字串:
$data = array( 'name' => 'John', 'age' => 30, 'gender' => 'male' ); $json_str = json_encode($data); echo $json_str;
這段程式碼的輸出結果是:
{"name":"John","age":30,"gender":"male"}
上面的程式碼中,將一個包含了name
、age
和gender
三個欄位值的PHP 陣列轉換成了一個JSON 字串。
然而,有時我們的 PHP 陣列中的值本身就包含有雙引號,當使用 json_encode()
函數將其轉換成 JSON 字串的時候,會出現問題。
例如,以下PHP 陣列就包含了有雙引號的值:
$data = array( 'name' => 'John "The Rock" Johnson', 'age' => 30, 'gender' => 'male' );
如果直接使用json_encode()
函數來轉換成JSON 字串:
$json_str = json_encode($data); echo $json_str;
輸出結果為:
{"name":"John "The Rock" Johnson","age":30,"gender":"male"}
我們會發現,JSON 字串中的name
欄位的值並沒有被正確地轉換成雙引號內的字串,而是在第一個雙引號處被截斷了。
為了解決這個問題,我們需要在使用json_encode()
函數轉換成JSON 字串的時候,加入一個參數JSON_UNESCAPED_SLASHES
,例如:
$json_str = json_encode($data, JSON_UNESCAPED_SLASHES); echo $json_str;
這樣,輸出結果會正確地將name
字段的值轉換成雙引號內的字串:
{"name":"John \"The Rock\" Johnson","age":30,"gender":"male"}
注意到輸出結果中name
字段的值已經被正確地使用了雙引號括起來,並且內部的雙引號也被轉義成了\"
。這樣,轉換成的JSON 字串才能正確地被解析。
除了JSON_UNESCAPED_SLASHES
參數外,還有一些其他的參數可以用來控制json_encode()
函數的轉換結果。如果你需要了解更多,可以參考PHP 官方文檔中的json_encode()
函數說明。
以上是php數組轉json中有雙引號怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!