Codeigniter与数据映射器给出无效的json

时间:2013-04-11 16:33:57

标签: codeigniter datamapper

我有这个从表中选择列,我想将它传递给Jquery ajax fn。

我正在使用下面的代码但是获得了无效的json

我的表有三个列ID,名称和城市,但我没有选择城市

这是我的json回应

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

1 个答案:

答案 0 :(得分:1)

可悲的是,当你调用all_to_json()时,当前稳定的(1.8.1)WanWizard数据映射器DMZ_Json类会对字段进行双重编码。这个问题似乎已修复in the develop branch。您可以通过以下多种方式解决此问题:

1。在单个模型对象上调用to_json()并使用字符串操作创建json数组:

$my_objects = (new Model)->get();
$results = array();
foreach ($my_objects as $o) {
    $results[] = $o->to_json();
}
// building a json array from the strings returned by $o->to_json()
print '['.join(',', $results).']';

2。您可以使用数组扩展的all_to_array方法和结果为的json_encode:

$my_object_arrays = (new Model)->get()->all_to_array();
print json_encode($my_object_arrays);