檢測返回的數據是不是json格式的數據我們可以使用幾個方法來判斷,下面我整理了一些比較實用的檢測json字符串是不是json格式的例子,希望例子能幫助各位帶來幫助.
首先要記住json_encode返回的是字符串,而json_decode返回的是對象.
判斷數據不是JSON格式,代碼如下:
- function is_not_json($str){
- return is_null(json_decode($str));
- }
判斷數據是合法的json數據,PHP版本大于5.3,代碼如下:
- function is_json($string) {
- json_decode($string);
- return (json_last_error() == JSON_ERROR_NONE);
- }
json_last_error()函數返回數據編解碼過程中發生的錯誤.
注意:json編解碼所操作字符串必須是UTF8的,如果不是json則返回false,代碼如下:
- /**
- * 解析json串
- * @param type $json_str
- * @return type
- */
- private function analyJson($json_str) {
- $json_str = str_replace('\\', '', $json_str);
- $out_arr = array();
- preg_match('/\{.*\}/', $json_str, $out_arr);
- if (!emptyempty($out_arr)) {
- $result = json_decode($out_arr[0], TRUE);
- } else {//開源軟件:Vevb.com
- return FALSE;
- }
- return $result;
- }
上面的幾種方法都可以檢測來是不是json數據,當然我還有一個另類的做法就是使用ajax來實現,例子如下.
使用 AJAX 請求來獲得 JSON 數據,并輸出結果,代碼如下:
- $.getJSON("test.js", function(json){
- alert("JSON Data: " + json.users[3].name);
- });
如果返回的值不正確就是不合法的json字符串了,是不是這樣也可以呀.
新聞熱點
疑難解答