### [WordPress JSON 处理相关函数大全](https://www.prosaas.cn/article/9762) **Published:** 2019-09-20T03:17:52 **Author:** 5201314 **Excerpt:** JSON处理是WordPress开发中的经常需要处理的一项工作,为此WordPress 定义了一堆JSON处理… JSON处理是WordPress开发中的经常需要处理的一项工作,为此WordPress 定义了一堆JSON处理的函数,下面由**WordPress教程**栏目给大家做一下统一的介绍。 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231212132733938.jpg) **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),中文就不会被编码成 unicode,更可读。 只要你安装 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 两个函数: wp\_send\_json\_success( $data = null, $status\_code = null ) wp\_send\_json\_error( $data = null, $status\_code = null ) wp\_send\_json\_success 先输出 success 为 true,然后把数据 $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 处理相关函数大全的详细内容,更多请关注知企PROSAAS其它相关文章! **Categories:** WordPress ---