php中對(duì)內(nèi)置函數(shù)json_encode和json_decode的異常處理
在php中,json_encode和json_decode是很常用的函數(shù),具體用法可以查看相關(guān)文檔,這里主要說(shuō)一下錯(cuò)誤處理。
平時(shí)我們?cè)谑褂眠@兩個(gè)方法的時(shí)候可能沒(méi)怎么注意錯(cuò)誤處理,有時(shí)候如果傳入的參數(shù)格式不正確就會(huì)導(dǎo)致報(bào)錯(cuò)了。下面是錯(cuò)誤處理的方式:
json_last_error — 返回最后發(fā)生的錯(cuò)誤,如果有,返回 JSON 編碼解碼時(shí)最后發(fā)生的錯(cuò)誤。
int json_last_error ( void )
常量 | 含義 | 可用性 |
---|---|---|
JSON_ERROR_NONE | 沒(méi)有錯(cuò)誤發(fā)生 | |
JSON_ERROR_DEPTH | 到達(dá)了最大堆棧深度 | |
JSON_ERROR_STATE_MISMATCH | 無(wú)效或異常的 JSON | |
JSON_ERROR_CTRL_CHAR | 控制字符錯(cuò)誤,可能是編碼不對(duì) | |
JSON_ERROR_SYNTAX | 語(yǔ)法錯(cuò)誤 | |
JSON_ERROR_UTF8 | 異常的 UTF-8 字符,也許是因?yàn)椴徽_的編碼。 | PHP 5.3.3 |
JSON_ERROR_RECURSION | One or more recursive references in the value to be encoded | PHP 5.5.0 |
JSON_ERROR_INF_OR_NAN | One or more NAN or INF values in the value to be encoded | PHP 5.5.0 |
JSON_ERROR_UNSUPPORTED_TYPE | 指定的類(lèi)型,值無(wú)法編碼。 | PHP 5.5.0 |
JSON_ERROR_INVALID_PROPERTY_NAME | 指定的屬性名無(wú)法編碼。 | PHP 7.0.0 |
JSON_ERROR_UTF16 | 畸形的 UTF-16 字符,可能因?yàn)樽址幋a不正確。 | PHP 7.0.0 |
<?php // 一個(gè)有效的 json 字符串 $json[] = '{"Organization": "PHP Documentation Team"}'; // 一個(gè)無(wú)效的 json 字符串會(huì)導(dǎo)致一個(gè)語(yǔ)法錯(cuò)誤,在這個(gè)例子里我們使用 ' 代替了 " 作為引號(hào) $json[] = "{'Organization': 'PHP Documentation Team'}"; foreach ($json as $string) { echo 'Decoding: ' . $string; json_decode($string); switch (json_last_error()) { case JSON_ERROR_NONE: echo ' - No errors'; break; case JSON_ERROR_DEPTH: echo ' - Maximum stack depth exceeded'; break; case JSON_ERROR_STATE_MISMATCH: echo ' - Underflow or the modes mismatch'; break; case JSON_ERROR_CTRL_CHAR: echo ' - Unexpected control character found'; break; case JSON_ERROR_SYNTAX: echo ' - Syntax error, malformed JSON'; break; case JSON_ERROR_UTF8: echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; break; default: echo ' - Unknown error'; break; } echo PHP_EOL; }
php官方參考文檔:https://secure.php.net/manual/zh/function.json-last-error.php
到此這篇關(guān)于php中對(duì)內(nèi)置函數(shù)json_encode和json_decode的異常處理的文章就介紹到這了,更多相關(guān)php處理json_encode和json_decode異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用composer命令加載vendor中的第三方類(lèi)庫(kù) 的方法
這篇文章主要介紹了使用composer命令加載vendor中的第三方類(lèi)庫(kù)的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07php反引號(hào)與短標(biāo)簽?zāi)_本示例
這篇文章主要為大家介紹了php反引號(hào)與短標(biāo)簽的腳本示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04PHP中用mysqli面向?qū)ο蟠蜷_(kāi)連接關(guān)閉mysql數(shù)據(jù)庫(kù)的方法
下面小編就為大家?guī)?lái)一篇PHP中用mysqli面向?qū)ο蟠蜷_(kāi)連接關(guān)閉mysql數(shù)據(jù)庫(kù)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11laravel郵件發(fā)送的實(shí)現(xiàn)代碼示例
這篇文章主要介紹了laravel郵件發(fā)送的實(shí)現(xiàn)代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01PHP下用Swoole實(shí)現(xiàn)Actor并發(fā)模型的方法
這篇文章主要介紹了PHP下用Swoole實(shí)現(xiàn)Actor并發(fā)模型的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Yii框架實(shí)現(xiàn)郵箱激活的方法【數(shù)字簽名】
這篇文章主要介紹了Yii框架實(shí)現(xiàn)郵箱激活的方法,基于郵箱發(fā)送郵件實(shí)現(xiàn)數(shù)字簽名的激活功能,需要的朋友可以參考下2016-10-10PHP生成json和xml類(lèi)型接口數(shù)據(jù)格式
在做數(shù)據(jù)接口時(shí),我們通常要獲取第三方數(shù)據(jù)接口或者給第三方提供數(shù)據(jù)接口,而這些數(shù)據(jù)格式通常是以XML或者JSON格式傳輸,本文將介紹如何使用PHP生成XML格式數(shù)據(jù)供第三方調(diào)用以及如何獲取第三方提供的XML數(shù)據(jù)。2015-05-05PHP實(shí)現(xiàn)簡(jiǎn)單注冊(cè)登錄詳細(xì)代碼
這篇文章主要介紹了PHP實(shí)現(xiàn)簡(jiǎn)單注冊(cè)登錄詳細(xì)全部代碼實(shí)例講解,代碼講解的很清楚,對(duì)這方面不懂的初學(xué)者可以照著練習(xí)研究下2021-01-01阿里云PHP SMS短信服務(wù)驗(yàn)證碼發(fā)送方法
這篇文章主要介紹了阿里云PHP SMS短信服務(wù)驗(yàn)證碼發(fā)送方法,需要的朋友可以參考下2017-07-07使用Thinkphp框架開(kāi)發(fā)移動(dòng)端接口
本文給大家分享的是使用thinkphp框架開(kāi)發(fā)移動(dòng)端接口的2種方法,一種是開(kāi)發(fā)API,另外一種是實(shí)現(xiàn)移動(dòng)端訪(fǎng)問(wèn)自動(dòng)切換移動(dòng)主題模板,從而實(shí)現(xiàn)偽app訪(fǎng)問(wèn),下面我們就來(lái)詳細(xì)看下如何實(shí)現(xiàn)吧。2015-08-08