如何通过WordPress REST API返回合法JSON数组而非JSON对象?
解决MetaSlider返回JSON对象转数组的方案
方案1:自定义REST API端点
直接在主题的functions.php(或自定义插件)中添加一个自定义API端点,手动获取MetaSlider数据并整理成数组格式返回:
add_action('rest_api_init', function () { register_rest_route('custom/v1', '/slides/(?P<id>\d+)', array( 'methods' => 'GET', 'callback' => 'custom_get_metaslider_as_array', 'permission_callback' => '__return_true', // 公开访问,如需权限可调整 )); }); function custom_get_metaslider_as_array($request) { $slider_id = $request['id']; // 获取MetaSlider的滑块数据 $slides = metaslider_get_slides($slider_id); // 将对象结构转为数组 $slides_array = array_values((array)$slides); // 返回JSON数组 return rest_ensure_response($slides_array); }
使用时访问https://你的站点域名/wp-json/custom/v1/slides/滑块ID即可得到数组格式的响应。
方案2:过滤MetaSlider的API响应
利用MetaSlider提供的REST API钩子,修改它的默认输出结构:
add_filter('metaslider_rest_api_slides_response', 'convert_metaslider_response_to_array', 10, 2); function convert_metaslider_response_to_array($response, $slider_id) { // 将对象转为索引数组 return array_values((array)$response); }
添加这段代码后,MetaSlider原API端点返回的内容会自动转为数组格式,无需修改移动端请求地址。
方案3:移动端临时兼容(备选)
如果暂时无法修改后端,可让移动端开发者在收到JSON对象后,通过代码提取值转为数组,比如JavaScript示例:
// 假设后端返回的是obj const slidesArray = Object.values(obj);
但优先推荐前两种后端修改方案,保证API结构的规范性。
内容的提问来源于stack exchange,提问作者user3671371
相关产品推荐
相关产品推荐

