php中對內(nèi)置函數(shù)json_encode和json_decode的異常處理
在php中,json_encode和json_decode是很常用的函數(shù),具體用法可以查看相關(guān)文檔,這里主要說一下錯誤處理。
平時我們在使用這兩個方法的時候可能沒怎么注意錯誤處理,有時候如果傳入的參數(shù)格式不正確就會導致報錯了。下面是錯誤處理的方式:
json_last_error — 返回最后發(fā)生的錯誤,如果有,返回 JSON 編碼解碼時最后發(fā)生的錯誤。
int json_last_error ( void )
常量 | 含義 | 可用性 |
---|---|---|
JSON_ERROR_NONE | 沒有錯誤發(fā)生 | |
JSON_ERROR_DEPTH | 到達了最大堆棧深度 | |
JSON_ERROR_STATE_MISMATCH | 無效或異常的 JSON | |
JSON_ERROR_CTRL_CHAR | 控制字符錯誤,可能是編碼不對 | |
JSON_ERROR_SYNTAX | 語法錯誤 | |
JSON_ERROR_UTF8 | 異常的 UTF-8 字符,也許是因為不正確的編碼。 | 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 | 指定的類型,值無法編碼。 | PHP 5.5.0 |
JSON_ERROR_INVALID_PROPERTY_NAME | 指定的屬性名無法編碼。 | PHP 7.0.0 |
JSON_ERROR_UTF16 | 畸形的 UTF-16 字符,可能因為字符編碼不正確。 | PHP 7.0.0 |
<?php // 一個有效的 json 字符串 $json[] = '{"Organization": "PHP Documentation Team"}'; // 一個無效的 json 字符串會導致一個語法錯誤,在這個例子里我們使用 ' 代替了 " 作為引號 $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中對內(nèi)置函數(shù)json_encode和json_decode的異常處理的文章就介紹到這了,更多相關(guān)php處理json_encode和json_decode異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用composer命令加載vendor中的第三方類庫 的方法
這篇文章主要介紹了使用composer命令加載vendor中的第三方類庫的方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07PHP中用mysqli面向?qū)ο蟠蜷_連接關(guān)閉mysql數(shù)據(jù)庫的方法
下面小編就為大家?guī)硪黄狿HP中用mysqli面向?qū)ο蟠蜷_連接關(guān)閉mysql數(shù)據(jù)庫的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11PHP下用Swoole實現(xiàn)Actor并發(fā)模型的方法
這篇文章主要介紹了PHP下用Swoole實現(xiàn)Actor并發(fā)模型的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06Yii框架實現(xiàn)郵箱激活的方法【數(shù)字簽名】
這篇文章主要介紹了Yii框架實現(xiàn)郵箱激活的方法,基于郵箱發(fā)送郵件實現(xiàn)數(shù)字簽名的激活功能,需要的朋友可以參考下2016-10-10PHP生成json和xml類型接口數(shù)據(jù)格式
在做數(shù)據(jù)接口時,我們通常要獲取第三方數(shù)據(jù)接口或者給第三方提供數(shù)據(jù)接口,而這些數(shù)據(jù)格式通常是以XML或者JSON格式傳輸,本文將介紹如何使用PHP生成XML格式數(shù)據(jù)供第三方調(diào)用以及如何獲取第三方提供的XML數(shù)據(jù)。2015-05-05