CodeIgniter新手API开发:如何生成指定JSON结构及字符串转数组
如何修改CodeIgniter API代码生成预期的JSON结构?
我是CodeIgniter新手,正尝试用它开发API,需要解析JSON并生成特定JSON结构。跟着教程操作后没得到预期结构,以下是我的代码片段:
function getnew($id="", $limit="", $ofset="", $idp="") { if($id=='1') { $data = $this->NewsModel->ucweb_row("1", $limit, $ofset); $count = $this->NewsModel->news_count(); } else { $data = $this->NewsModel->ucweb_row("6", $limit, $ofset, $id); $count = $this->NewsModel->news_count_category($id); } if($idp != '') { $data = $this->NewsModel->setIsLikeIsFav($data, $idp); } $page = ceil($count/$limit); return $this->response([ 'code' => '200', 'data' => ['size'=>$limit, 'row'=>$data ], ], REST_Controller::HTTP_OK); }
目前得到的结果不符合预期,请问如何修改才能生成目标JSON结构?
看起来你目前的返回结构里缺少了几个关键字段——比如总条数count和总页数page,这应该是导致和预期结构不符的核心原因。我帮你调整一下代码,把这些必要字段补进去,同时让结构更贴合常规的API返回规范:
function getnew($id="", $limit="", $ofset="", $idp="") { // 处理数据查询与计数逻辑 if($id=='1') { $data = $this->NewsModel->ucweb_row("1", $limit, $ofset); $count = $this->NewsModel->news_count(); } else { $data = $this->NewsModel->ucweb_row("6", $limit, $ofset, $id); $count = $this->NewsModel->news_count_category($id); } // 处理点赞收藏状态 if($idp != '') { $data = $this->NewsModel->setIsLikeIsFav($data, $idp); } // 计算总页数,增加limit判断避免除以0错误 $page = $limit > 0 ? ceil($count/$limit) : 0; // 构建符合预期的响应结构 return $this->response([ 'code' => '200', 'message' => '请求成功', // 补充友好提示字段,方便前端处理 'data' => [ 'size' => $limit, 'total' => $count, // 总数据条数 'page' => $page, // 总页数 'row' => $data, // 具体数据列表 'offset' => $ofset // 可选:如果目标结构需要当前偏移量,可添加这个字段 ] ], REST_Controller::HTTP_OK); }
几点小补充:
- 我加了
message字段,这是API返回里很常见的友好提示,前端可以直接用来做用户反馈 - 把计算好的
count和page都放到了data结构里,这是分页接口的标准返回内容 - 给
page的计算加了$limit > 0的判断,避免当limit未传或者为0时出现除以0的报错 - 如果你的目标结构还有其他特殊字段,只需要在
data数组里对应添加即可
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

