這篇文章主要介紹“怎么理解PHP中JSON的編碼與轉(zhuǎn)碼”,在日常操作中,相信很多人在怎么理解PHP中JSON的編碼與轉(zhuǎn)碼問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么理解PHP中JSON的編碼與轉(zhuǎn)碼”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專業(yè)提供成都主機(jī)托管四川主機(jī)托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價(jià)格,機(jī)房位于中國(guó)電信/網(wǎng)通/移動(dòng)機(jī)房,棕樹數(shù)據(jù)中心服務(wù)有保障!
JSON是什么
JSON 主要用于傳送數(shù)據(jù),它是一種輕量級(jí)的數(shù)據(jù)交換的格式,它能夠完全的不同于PHP的編程語言來進(jìn)行儲(chǔ)存和表示數(shù)據(jù)。
它比較容易閱讀和編寫,同時(shí)JSON對(duì)于機(jī)器的解析和生成也是比較簡(jiǎn)單,通過JSON能夠十分有效的提高數(shù)據(jù)之間傳送的效率。
我們?cè)赑HP中已經(jīng)有內(nèi)置的JSON拓展,接下來我們就來看一下PHP中的JSON函數(shù),應(yīng)該如何使用PHP語言來編碼JSON對(duì)象。
json_encode()
JSON編碼
在PHP中的json_encode()
是用來對(duì)變量進(jìn)行JSON編碼的,該函數(shù)的基本語法格式如下:
string json_encode ( $value [, $options = 0 ] )
其中需要注意的是:運(yùn)行json_encode()
函數(shù)成功的話,返回的結(jié)果就是JSON的數(shù)據(jù),如果運(yùn)行錯(cuò)誤,返回的結(jié)果是false;
參數(shù)$value
表示的就是需要進(jìn)行編碼的值,其中json_encode()比較特殊的是,只有UTF-8 編碼的數(shù)據(jù)對(duì)該函數(shù)有效,參數(shù)options
表示的是由常量組成的二進(jìn)制的掩碼,這些常量有: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ù)組元素轉(zhuǎn)換為JSON格式的數(shù)據(jù),示例如下:
1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); $arr1 = array('一' => 1, '二' => 2, '三' => 3, '四' => 4, '五' => 5); echo json_encode($arr1); ?>
輸出結(jié)果:
由上述示例我們能夠看到,通過json_encode()能夠?qū)HP的數(shù)組元素轉(zhuǎn)換為JSON合適的數(shù)據(jù),而且只有UTF-8 編碼的數(shù)據(jù)對(duì)該函數(shù)有效。
上述示例轉(zhuǎn)換的是PHP中的一維數(shù)組,接下來我們看一下多維數(shù)組轉(zhuǎn)換的結(jié)果是什么樣的,示例如下:
輸出結(jié)果:
上述示例是通過函數(shù)將PHP中的數(shù)組元素進(jìn)行轉(zhuǎn)換,接下來我們看一下將PHP對(duì)象轉(zhuǎn)換為JSON格式的數(shù)據(jù),示例如下:
name; } } $person1 = new Person(); echo json_encode($person1);//{"name":"public name"} ?>
輸出結(jié)果:
再來看一個(gè)示例:
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); ?>
輸出結(jié)果:
由此我們便通過json_encode()函數(shù)完成了PHP中對(duì)象轉(zhuǎn)換為JSON格式。
json_decode()
JSON解碼
PHP中能夠通過json_decode()
函數(shù)來對(duì)JSON格式的字符換進(jìn)行轉(zhuǎn)換成PHP的變量格式,這也就是解碼。下面我們看一下json_decode()函數(shù)的基本語法格式,示例如下:
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
其中需要注意的是:參數(shù)json_string
表示需要進(jìn)行轉(zhuǎn)換也就是解碼的JSON格式的字符串,同json_encode
()函數(shù)一樣,這個(gè)進(jìn)行解碼的數(shù)據(jù)也必須是UTF-8的編碼數(shù)據(jù);參數(shù)assoc表示當(dāng)參數(shù)是true的時(shí)候,返回的結(jié)果是個(gè)數(shù)組,當(dāng)參數(shù)是false是返回的結(jié)果是對(duì)象;
參數(shù)depth表示的是整數(shù)類型的參數(shù),參數(shù)options
表示的是二進(jìn)制的掩碼,與json_encode
()不同的是該函數(shù)目前沒有支持這么多,目前只支持 JSON_BIGINT_AS_STRING
。
接下來我們通過示例來看一下PHP怎樣解碼,示例如下:
輸出結(jié)果:
通過上述示例我們看到了通過json_decode()對(duì)JSON進(jìn)行解碼,上述是解碼成數(shù)組,下面我們看一下解碼成對(duì)象,示例如下:
value1 [key2] => value2 ?>
輸出結(jié)果:
由此我們便通過json_encode()函數(shù)與json_decode()函數(shù)完成了PHP數(shù)據(jù)與JSON的編碼與解碼。
到此,關(guān)于“怎么理解PHP中JSON的編碼與轉(zhuǎn)碼”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!