php中對(duì)內(nèi)置函數(shù)json_encode和json_decode的異常處理
在php中,json_encode和json_decode是很常用的函數(shù),具體用法可以查看相關(guān)文檔,這里主要說一下錯(cuò)誤處理。
平時(shí)我們?cè)谑褂眠@兩個(gè)方法的時(shí)候可能沒怎么注意錯(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 | 沒有錯(cuò)誤發(fā)生 | |
| JSON_ERROR_DEPTH | 到達(dá)了最大堆棧深度 | |
| JSON_ERROR_STATE_MISMATCH | 無效或異常的 JSON | |
| JSON_ERROR_CTRL_CHAR | 控制字符錯(cuò)誤,可能是編碼不對(duì) | |
| JSON_ERROR_SYNTAX | 語法錯(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 | 指定的類型,值無法編碼。 | PHP 5.5.0 |
| JSON_ERROR_INVALID_PROPERTY_NAME | 指定的屬性名無法編碼。 | 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è)無效的 json 字符串會(huì)導(dǎo)致一個(gè)語法錯(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)文章
PHP 使用 Imagick 裁切/生成縮略圖/添加水印自動(dòng)檢測(cè)和處理 GIF
這篇文章主要介紹了PHP 使用 Imagick 裁切/生成縮略圖/添加水印自動(dòng)檢測(cè)和處理 GIF的相關(guān)資料,需要的朋友可以參考下2016-02-02
php微信公眾平臺(tái)開發(fā)(四)回復(fù)功能開發(fā)
這篇文章主要介紹了php微信公眾平臺(tái)開發(fā)的第四篇,微信回復(fù)功能開發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Zend Framework入門教程之Zend_Mail用法示例
這篇文章主要介紹了Zend Framework中Zend_Mail用法,結(jié)合實(shí)例形式分析了Zend Framework中Zend_Mail組件的功能、使用步驟與相關(guān)操作技巧,需要的朋友可以參考下2016-12-12
PHP SPL標(biāo)準(zhǔn)庫(kù)之?dāng)?shù)據(jù)結(jié)構(gòu)堆(SplHeap)簡(jiǎn)單使用實(shí)例
這篇文章主要介紹了PHP SPL標(biāo)準(zhǔn)庫(kù)之?dāng)?shù)據(jù)結(jié)構(gòu)堆(SplHeap)簡(jiǎn)單使用實(shí)例,本文還同時(shí)講解了最大堆(SplMaxHeap)、最小堆(SplMinHeap)的相關(guān)知識(shí),需要的朋友可以參考下2015-05-05
ThinkPHP 6 添加跳轉(zhuǎn)提示擴(kuò)展 liliuwei/thinkphp-jump的操作
liliuwei/thinkphp-jump 是 TP5 中經(jīng)典跳轉(zhuǎn)提示,在 TP6 中已經(jīng)取消,通過 composer 下載該擴(kuò)展可以在 TP6 中使用 TP5 的跳轉(zhuǎn)提示操作,這篇文章主要介紹了ThinkPHP 6 添加跳轉(zhuǎn)提示擴(kuò)展 liliuwei/thinkphp-jump,需要的朋友可以參考下2023-08-08
thinkPHP5.0框架引入Traits功能實(shí)例分析
這篇文章主要介紹了thinkPHP5.0框架引入Traits功能,結(jié)合實(shí)例形式分析了Traits的概念、功能及thinkPHP5.0中Traits功能的使用方法,需要的朋友可以參考下2017-03-03

