将codeigniter查询转换为json?

将codeigniter查询转换为json?,json,codeigniter,Json,Codeigniter,我想用json_encode将模型查询转换为json,但它不起作用。但对于一个普通数组,它确实可以 $arr = array("one", "two", "three"); $data["json"] = json_encode($arr); 输出 <?php echo "var arr=".$json.";"; ?> var arr=["one","two","three"]; 我试着这样做 $posts = $this->Posts_model-&

我想用json_encode将模型查询转换为json,但它不起作用。但对于一个普通数组,它确实可以

 $arr = array("one", "two", "three");
       $data["json"] = json_encode($arr);
输出

 <?php echo "var arr=".$json.";"; ?>
 var arr=["one","two","three"];
我试着这样做

 $posts = $this->Posts_model->SelectAll();
       $data["posts"] = json_encode($posts); 
顺便说一句,当我不用json_编码时,模型和方法工作得很好


我可能做错了什么,但问题是什么

您似乎试图对CodeIgniter数据库结果对象而不是结果数组进行编码。数据库结果对象充当光标到结果集中的包装器。您应该从结果对象获取结果数组,然后对其进行编码

您的模型代码如下所示:

function SelectAll()
{
    $sql = 'SELECT * FROM posts';
    // Return the result object
    return $this->db->query($sql);
}
function SelectAll()
{
    $sql = 'SELECT * FROM posts';
    $query = $this->db->query($sql);
    // Fetch the result array from the result object and return it
    return $query->result();
}
应该是这样的:

function SelectAll()
{
    $sql = 'SELECT * FROM posts';
    // Return the result object
    return $this->db->query($sql);
}
function SelectAll()
{
    $sql = 'SELECT * FROM posts';
    $query = $this->db->query($sql);
    // Fetch the result array from the result object and return it
    return $query->result();
}
这将返回一个可以用JSON编码的对象数组


尝试对结果对象进行编码时出现错误的原因是它有一个无法用JSON编码的成员变量。此资源变量实际上是结果集中的光标。

以下是工作解决方案:

public function lastActivity()
{
    header("Content-Type: application/json");
    $this->db->select('*');
    $this->db->from('table_name');
    $query = $this->db->get();

    return json_encode($query->result());
}
            $json_data = $this->home_model->home_getall();
            $arr = array();
            foreach ($json_data as $results) {
            $arr[] = array(
                   'id' => $results->id,
                   'text' => $results->name
                    );
            }
         //save data mysql data in json encode format       
          $data['select2data'] = json_encode($arr);
模特(职位):

控制器:

$data['post'] = $this->post->SelectAll()->result_array();
echo json_encode($data);
结果:

{"post":[{"id":"5","name":"name_of_post"}]}

根据最新的CI标准,在控制器文件中使用以下代码:

$this->output->set_content_type('application/json')->set_output(json_encode($arr));

你能发布不起作用的代码吗?我不明白为什么要将查询转换为json。您不应该将结果数据转换为json吗?如果出现错误,您可能希望与我们共享错误。;-)你能发布错误消息吗?我已经编辑了我的帖子,非常感谢!谢谢。我对codeigniter有点陌生,还有很多东西要学习它的API,但现在它更有趣了。没问题。很乐意帮忙:-)