[PHP] json_encode、json_decode JSON的編碼與解碼應用

php_json_code

JSON

json可以說是一個非常方便且跨語言的資料交換語言,他可以將許多的資料彙整成一個字串,並且仍然適合讓人閱讀(雖然說資料量太大會眼花),而在PHP之中又有非常便利的指令可以將陣列輕易的編碼與解碼成json格式,在php或是javascript之中,更是可以透過json來傳遞許多的資料,它的特性是在一段字串之中透過一些分割符號能夠將這個字串轉換為一個陣列的資料,反之也可以將一個陣列的資料轉換成一段文字,便於在網頁跳轉之間傳遞。

最常使用的情境是,當我們要把當前這個頁面的許多資料傳遞到下個頁面去,如果每一個資料都各別設定一個名稱傳遞,在接收端我們必須要一個一個接收,而這個情況下如果我們能夠將這些資料完全編碼成json格式,那麼接收的時候只要一條解碼json的指令就可以快速的將這些資料恢復成可以馬上應用的狀態,如果能夠活用的話是相當相當方便的!

json的格式會將資料(陣列)透過 括號、引號、逗號等…有規律的將它排序成一段字串!


json_encode();

首先,要先說明的是將依個陣列轉換成json格式的指令

json_encode($陣列);

在php要把一個陣列變成json格式是相當容易的,你只要直接把這個陣列丟進json_encode()裡面就會輸出成經過json編碼的字串了!

範例:

範例1:

$Array = array("Apple", "iPhone", "Google", "Android");
echo json_encode($Array); //Ans: ["Apple","iPhone","Google","Android"]

我們可以看到當在一維陣列的時候他會自動透過括號、逗號、引號將資料依序排序,當我們仔細觀察一下之後就可以輕易的用肉眼看出他的規則!

範例2:

$Array['Apple']['System'] = "iOS";
$Array['Apple']['Device'] = "iPhone";
$Array['Google']['System'] = "Android";
$Array['Google']['Device'] = "Pixel";
echo json_encode($Array); 
//Ans: {"Apple":{"System":"iOS","Device":"iPhone"},"Google":{"System":"Android","Device":"Pixel"}}

接下來當我們看看比較複雜一點的陣列,例如範例2中的二維陣列,Json也一樣的可以將資料整理的相當的不錯,雖然這種複雜程度對肉眼來說就比較難以直接辨識了,但是在程式之中要進行傳遞的時候就可以先json包裝後再進行傳遞,可以省續很多傳遞與接收之間的麻煩。


json_decode();

這是一個將json格式轉換回物件或陣列的指令

json_decode($json字串, ($assoc));

$json字串:這裡我們要輸入的就是要解碼的json格式字串
$assoc:(選填)這個值預設是False,當這個值變成True的時候輸出的格式會從物件(Object)變為陣列(Array)

這個部分在解碼的時候會建議大家 assoc這個值要給他設定為 True 或是 1 ,這樣子輸出的格式才會是平常常用的陣列(Array)

範例:

範例1:

$Json = '["Apple","iPhone","Google","Android"]';
print_r(json_decode($Json, True));
// Ans: Array ( [0] => Apple [1] => iPhone [2] => Google [3] => Android )

範例2:

$Json = '{"Apple":{"System":"iOS","Device":"iPhone"},"Google":{"System":"Android","Device":"Pixel"}}';
print_r(json_decode($Json, True));
// Ans:
// Array
// (
//    [Apple] => Array
//        (
//            [System] => iOS
//            [Device] => iPhone
//        )
//    [Google] => Array
//        (
//            [System] => Android
//            [Device] => Pixel
//        )
//)

在範例中我們所示範的內容相對之下是不多的,但是當我們實際要用的資料量更大的時候,就會很輕易的感覺到json是相對之下非常方便的!


參考資料:

PHP.net json_encode(); (https://www.php.net/manual/en/function.json-encode.php)
PHP.net json_decode(); (https://www.php.net/manual/en/function.json-decode.php)

更多PHP相關閱讀:https://richarlin.tw/blog/category/website/php/

Facebook 留言回應