在現(xiàn)代Web開(kāi)發(fā)中,JSON(JavaScript Object Notation)已經(jīng)成為了一種數(shù)據(jù)交換格式的標(biāo)準(zhǔn)。它輕量、易讀、易編寫,因此被廣泛應(yīng)用于前后端的數(shù)據(jù)傳輸。而PHP語(yǔ)言作為Web開(kāi)發(fā)的一種主要語(yǔ)言,也自然而然的提供了許多與JSON相關(guān)的功能。本文介紹PHP中JSON增加的相關(guān)內(nèi)容。
JSON Encode/Decode
PHP內(nèi)置了JSON編碼和解碼函數(shù)。我們可以使用json_encode()函數(shù)將PHP數(shù)組轉(zhuǎn)換為JSON格式的數(shù)據(jù),使用json_decode()函數(shù)將JSON格式的數(shù)據(jù)轉(zhuǎn)換為PHP數(shù)組。看下面的例子:
$data = array( 'name' =>'Tom', 'age' =>18, 'hobbies' =>array('coding', 'music', 'reading') ); $json = json_encode($data); echo $json; // {"name":"Tom","age":18,"hobbies":["coding","music","reading"]} $arr = json_decode($json, true); print_r($arr); /* Array ( [name] =>Tom [age] =>18 [hobbies] =>Array ( [0] =>coding [1] =>music [2] =>reading ) ) */通過(guò)其中的第二個(gè)參數(shù),我們可以將json_decode()函數(shù)返回的結(jié)果轉(zhuǎn)換為PHP對(duì)象:
$obj = json_decode($json); // 返回stdClass對(duì)象 echo "My name is {$obj->name}. I like {$obj->hobbies[0]}."; // My name is Tom. I like coding.JSON_PRETTY_PRINT選項(xiàng) 如果你被上面的JSON輸出給密密麻麻的大括號(hào)和引號(hào)困擾,可以使用JSON_PRETTY_PRINT選項(xiàng)進(jìn)行格式化輸出。此選項(xiàng)會(huì)自動(dòng)把JSON數(shù)據(jù)進(jìn)行縮進(jìn)和換行,使其更加清晰易讀:
$json = json_encode($data, JSON_PRETTY_PRINT); echo $json; // { "name": "Tom", "age": 18, "hobbies": [ "coding", "music", "reading" ] }JSON_UNESCAPED_UNICODE選項(xiàng) 如果你的JSON數(shù)據(jù)中包含了中文字符,那么默認(rèn)情況下,json_encode()函數(shù)會(huì)將其進(jìn)行Unicode編碼。例如:
$data = array('中文' =>'Hello'); $json = json_encode($data); echo $json; // {"\u4e2d\u6587":"Hello"}但是,如果你不想將中文字符進(jìn)行Unicode編碼,可以使用JSON_UNESCAPED_UNICODE選項(xiàng):
$json = json_encode($data, JSON_UNESCAPED_UNICODE); echo $json; // {"中文":"Hello"}JSON_THROW_ON_ERROR選項(xiàng) 在解析JSON數(shù)據(jù)的時(shí)候,如果存在錯(cuò)誤,json_decode()函數(shù)會(huì)返回null。但是,從PHP 7.3開(kāi)始,我們可以使用JSON_THROW_ON_ERROR選項(xiàng),當(dāng)解析出現(xiàn)錯(cuò)誤時(shí),會(huì)拋出JsonException異常:
$json = '{"name":"Tom","age":}'; try { $obj = json_decode($json, false, 512, JSON_THROW_ON_ERROR); } catch (JsonException $e) { echo $e->getMessage(); // Syntax error }以上就是PHP中JSON增加的相關(guān)內(nèi)容。通過(guò)這種數(shù)據(jù)交換格式,我們可以更加高效地進(jìn)行數(shù)據(jù)傳輸。希望本文能對(duì)你有所幫助。