带有datamapper ORM的CodeIgniter

时间:2013-04-11 06:22:29

标签: codeigniter codeigniter-datamapper

我在数据映射器中使用get()方法从数据库中选择列。我将此对象传递给json_encode();当我这样做时,我收到此错误

json_encode()  type is unsupported, encoded as null

更新三

["{\"id\":1,\"name\":\"JOHN\",\"city\":\"null\"}"
,"{\"id\":2,\"name\":\"MICHEAL\,\"city\":\"null\"}"]

这是我的回复,我没有选择城市,但仍然出现城市。如何以正确的格式获取json

SyntaxError:JSON.parse:JSON数据后的意外非空白字符

[Break On This Error]   

var jsonData = JSON.parse(data);

2 个答案:

答案 0 :(得分:0)

将Datamapper对象编码为json对象需要扩展中的函数。您可以在此处找到导入扩展程序的方法:http://datamapper.wanwizard.eu/pages/extensions.html 这是一种方法:

class Test extends DataMapper {

    // Include the json extension
    var $extensions = array('json');
.......

  $test= new Test();                
  $test->where('id', $this->input->post('id'));
  $test->select('id,name');
  $test->get();
  $test->set_json_content_type();
  echo $test->all_to_json();

“城市”栏目存在的事实是正常的。来自DataMapper用户指南:

  

使用相应表格中的所有对象填充对象,   但只填充了标题和说明字段

要解码您的JSON,您需要使用此方法(如果您还没有,请不要忘记导入扩展名)

$n = new Test();
$n->from_json([put your JSON string here]);

答案 1 :(得分:0)

我没有使用Datamapper进行CI,但我很确定你应该做以下事情:

$test= new Test();                
$test->select('id,tag_name');
$test->where('id', $this->input->post('id'));
$test->get();
json_encode($test);

注意:在使用$ test变量对JSON进行编码之前,调用 - > get()应该是最后一次调用。