0

我正在使用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);
4

2 回答 2

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]);
于 2013-04-11T06:55:30.053 回答
0

我没有将 Datamapper 用于 CI,但我很确定您应该执行以下操作:

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

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

于 2013-04-11T07:09:05.167 回答