您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么理解PHP中JSON的編碼與轉碼”,在日常操作中,相信很多人在怎么理解PHP中JSON的編碼與轉碼問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么理解PHP中JSON的編碼與轉碼”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
JSON是什么
JSON 主要用于傳送數(shù)據(jù),它是一種輕量級的數(shù)據(jù)交換的格式,它能夠完全的不同于PHP的編程語言來進行儲存和表示數(shù)據(jù)。
它比較容易閱讀和編寫,同時JSON對于機器的解析和生成也是比較簡單,通過JSON能夠十分有效的提高數(shù)據(jù)之間傳送的效率。
我們在PHP中已經有內置的JSON拓展,接下來我們就來看一下PHP中的JSON函數(shù),應該如何使用PHP語言來編碼JSON對象。
json_encode()
JSON編碼
在PHP中的json_encode()
是用來對變量進行JSON編碼的,該函數(shù)的基本語法格式如下:
string json_encode ( $value [, $options = 0 ] )
其中需要注意的是:運行json_encode()
函數(shù)成功的話,返回的結果就是JSON的數(shù)據(jù),如果運行錯誤,返回的結果是false;
參數(shù)$value
表示的就是需要進行編碼的值,其中json_encode()比較特殊的是,只有UTF-8 編碼的數(shù)據(jù)對該函數(shù)有效,參數(shù)options
表示的是由常量組成的二進制的掩碼,這些常量有:JSON_HEX_QUOT
, JSON_HEX_TAG
, JSON_HEX_AMP
, JSON_HEX_APOS
, JSON_NUMERIC_CHECK
,JSON_PRETTY_PRINT
, JSON_UNESCAPED_SLASHES
, JSON_FORCE_OBJECT
。
接下來我們通過示例來看一下PHP中json_encode()函數(shù)的使用,也就是將PHP的數(shù)組元素轉換為JSON格式的數(shù)據(jù),示例如下:
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); $arr1 = array('一' => 1, '二' => 2, '三' => 3, '四' => 4, '五' => 5); echo json_encode($arr1); ?>
輸出結果:
由上述示例我們能夠看到,通過json_encode()能夠將PHP的數(shù)組元素轉換為JSON合適的數(shù)據(jù),而且只有UTF-8 編碼的數(shù)據(jù)對該函數(shù)有效。
上述示例轉換的是PHP中的一維數(shù)組,接下來我們看一下多維數(shù)組轉換的結果是什么樣的,示例如下:
<?php $arr_2 = array(); // 三維數(shù)組 $arr_2['member']['lisi']['job'] = "worker"; $arr_2['member']['lisi']['age'] = 30; $arr_2['member']['wangwu']['job'] = "student"; $arr_2['member']['wangwu']['age'] = 10; echo json_encode($arr_2); //{"member":{"lisi":{"job":"worker","age":30},"wangwu":{"job":"student","age":10}}} ?>
輸出結果:
上述示例是通過函數(shù)將PHP中的數(shù)組元素進行轉換,接下來我們看一下將PHP對象轉換為JSON格式的數(shù)據(jù),示例如下:
<?php class Person{ public $name = "public name"; protected $ptName = "protected name"; private $pName = "private name"; public function sayName(){ return $this->name; } } $person1 = new Person(); echo json_encode($person1);//{"name":"public name"} ?>
輸出結果:
再來看一個示例:
<?php class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e); ?>
輸出結果:
由此我們便通過json_encode()函數(shù)完成了PHP中對象轉換為JSON格式。
json_decode()
JSON解碼
PHP中能夠通過json_decode()
函數(shù)來對JSON格式的字符換進行轉換成PHP的變量格式,這也就是解碼。下面我們看一下json_decode()函數(shù)的基本語法格式,示例如下:
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
其中需要注意的是:參數(shù)json_string
表示需要進行轉換也就是解碼的JSON格式的字符串,同json_encode
()函數(shù)一樣,這個進行解碼的數(shù)據(jù)也必須是UTF-8的編碼數(shù)據(jù);參數(shù)assoc表示當參數(shù)是true的時候,返回的結果是個數(shù)組,當參數(shù)是false是返回的結果是對象;
參數(shù)depth表示的是整數(shù)類型的參數(shù),參數(shù)options
表示的是二進制的掩碼,與json_encode
()不同的是該函數(shù)目前沒有支持這么多,目前只支持 JSON_BIGINT_AS_STRING
。
接下來我們通過示例來看一下PHP怎樣解碼,示例如下:
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
輸出結果:
通過上述示例我們看到了通過json_decode()對JSON進行解碼,上述是解碼成數(shù)組,下面我們看一下解碼成對象,示例如下:
<?php $jsonStr = '{"key1":"value1","key2":"value2"}'; print_r(json_decode($jsonStr,false));//stdClass Object ( [key1] => value1 [key2] => value2 ?>
輸出結果:
由此我們便通過json_encode()函數(shù)與json_decode()函數(shù)完成了PHP數(shù)據(jù)與JSON的編碼與解碼。
到此,關于“怎么理解PHP中JSON的編碼與轉碼”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。