WordPress JSON 處理相關函數大全

藏色散人
發布: 2019-09-20 11:17:52
轉載
3359 人瀏覽過

JSON處理是WordPress開發中的經常需要處理的一項工作,為此WordPress 定義了一堆JSON處理的函數,下面由WordPress教程專欄給大家做一下統一的介紹。

WordPress JSON 處理相關函數大全

wp_json_encode

#編碼成 JSON,並且進行一些完整性檢查。

wp_json_encode( $data, $options = 0, $depth = 512 )
登入後複製

簡單說下 WordPress 引進這個函數的原因:

 

首先不同 PHP 版本 json_encode 函數支援不同的參數。 PHP 5.3 之前只支援 一個參數 $data,PHP 5.3 引進了 $options 參數,PHP 5.5 又引進了 $depth 參數。所以 WordPress 適配不同版本的 PHP,wp_json_encode 都支援三個參數,相容於不同版本的 PHP。

在json_encode 之前,wp_json_encode 使用函數_wp_json_prepare_data 對資料進行清理,如果boolean,integer,double,string,NULL 這些類型,直接返回,如果數組,繼續使用_wp_json_prepare_data 函數對數組中的每個元素進行清理,如果是對象,如果該對象的class 實現了JsonSerializable 接口,則返回$data = $data->jsonSerialize(),否則,繼續使用_wp_json_prepare_data 對對像中的每個屬性進行清理。

然後使用 json_encode 進行編碼,如果不成功,則使用 _wp_json_sanity_check 對資料進行完整性處理,最後再使用 json_encode 進行編碼。 _wp_json_sanity_check 主要使用函數 _wp_json_convert_string 對資料進行深度 UTF-8 檢測和轉換。

所以建議使用 wp_json_encode 對變數進行 JSON 編碼,它的可靠性更高。

wpjam_json_encode

wp_json_encode( $data, $options = JSON_UNESCAPED_UNICODE, $depth = 512 )
登入後複製

PHP5.4 JSON 新增了一個選項:JSON_UNESCAPED_UNICODE,故名思議:不要編碼成 Unicode,讓中文更可讀。

所以我們寫了一個wpjam_json_encode 函數,相較於wp_json_encode,就是將$options 參數預設值設為JSON_UNESCAPED_UNICODE,這樣直接使用wpjam_json_encode($data),中文。

只要你安裝 WPJAM Basic 插件,你的 WordPress 就會有這個函數。

wp_send_json

直接傳送 JSON 資料。

wp_send_json( $response, $status_code = null )
登入後複製

他先輸出 application/json 的 Content-Type 頭,如果 $status_code 不為空,則輸出 $status_code 的狀態碼。

然後呼叫 wp_json_encode 對資料進行編碼。

wpjam_send_json

wpjam_send_json( $response, $status_code = null )
登入後複製

同樣為了能夠JSON 編碼之後,中文更可讀,我們也寫了wpjam_send_json 函數,它和wp_send_json 幾乎一致,只是調用對資料進行編碼的函數是wpjam_json_encode。

另外如果傳入的資料是 WP_Error 的實例,那麼 wpjam_send_json 直接輸出 errcode 和 errmsg JSON。如果沒有設定 errcode,則 wpjam_send_json 自動加上 errcode=>0

安裝 WPJAM Basic 插件,你的 WordPress 就會有這個函數。

wp_send_json_success 和wp_send_json_error

WordPress 也提供wp_send_json_success 和wp_send_json_error 兩個函數:##rrrereee_ccoo,然後把輸出為#json_cc資料$data 放到data 裡面輸出。 wp_send_json_error 則會判斷 $data 是否為 WP_Error 實例,如果是,則輸出 code 和 message 的陣列。我們實現的 wpjam_send_json 已經能夠自動化處理這些錯誤了。

wp_is_json_request


判斷目前請求是不是JSON 請求,或是回傳JSON 結果,這個函數沒有參數,直接使用:

#wp_is_json_request()


它透過判斷$_SERVER['HTTP_ACCEPT'] 中含有application/json,或$_SERVER['CONTENT_TYPE'] 等於application/json。

wp_is_jsonp_request


#判斷目前請求是不是JSONP 請求,或是回傳JSONP 結果,這個函數沒有參數,直接使用:

wp_is_jsonp_request()


它先判斷$_GET['_jsonp'] ,是否存在,然後透過函數wp_check_jsonp_callback 判斷它的值是否合法。

wp_check_jsonp_callback


#判斷JSONP callback 是不是一個合法的JavaScript callback 函數:

wp_check_jsonp_callback( $callback )


合法的JavaScript callback 函數只能數字加字符,以及英文點號。

以上是WordPress JSON 處理相關函數大全的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:wpjam.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!