You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:13:22