CakePHP Json响应没有键

时间:2013-12-05 10:59:22

标签: json cakephp

我正在使用cakephp来编写web服务。因此,为了响应json结果,我曾经_serialize,但是_serialize需要一个带有key =>的数组。值

 return array(
        'data' => $data,
        '_serialize' => array('data'));

Restful client中的回复:

{
"data": [
    {
        "id": "1",
        "title": "appt1",
        "start": "2013-12-05 14:00:00",
        "end": "2013-12-05 15:00:00",
        "backgroundColor": "#00ff00",
        "allDay": false
    },
    {
        "id": "2",
        "title": "appt2",
        "start": "2013-12-05 15:00:00",
        "end": "2013-12-05 17:00:00",
        "backgroundColor": "#00ff00",
        "allDay": false
    },
    {
        "id": "3",
        "title": "appt3",
        "start": "2013-12-05 15:00:00",
        "end": "2013-12-05 15:00:00",
        "backgroundColor": "#ff00ff",
        "allDay": false
    }
]

}

问题:如何删除结果中的关键'数据',如:

[
    {
        "id": "1",
        "title": "appt1",
        "start": "2013-12-05 14:00:00",
        "end": "2013-12-05 15:00:00",
        "backgroundColor": "#00ff00",
        "allDay": false
    },
    {
        "id": "2",
        "title": "appt2",
        "start": "2013-12-05 15:00:00",
        "end": "2013-12-05 17:00:00",
        "backgroundColor": "#00ff00",
        "allDay": false
    },
    {
        "id": "3",
        "title": "appt3",
        "start": "2013-12-05 15:00:00",
        "end": "2013-12-05 15:00:00",
        "backgroundColor": "#ff00ff",
        "allDay": false
    }
]

2 个答案:

答案 0 :(得分:0)

我在这里迟到了..但是无论如何,这就是你想要的:

$this->set([
    'data' => $data,
    '_serialize' => 'data',
]);
$this->RequestHandler->renderAs($this, 'json');

答案 1 :(得分:-1)

请记住,JSON只是PHP的一个字符串,因此您的字面答案是,如果您愿意,可以使用substr()preg_match()。当然,这不是正确的做事方式。正确的方法是:

  1. 将REST数据解码为标准PHP对象。
  2. 将类变量$data分配给新变量
  3. 将其编码回JSON:
  4. 瞧:

    $data = json_decode('{
            "data": [
                {
                    "id": "1",
                    "title": "appt1",
                    "start": "2013-12-05 14:00:00",
                    "end": "2013-12-05 15:00:00",
                    "backgroundColor": "#00ff00",
                    "allDay": false
                },
                {
                    "id": "2",
                    "title": "appt2",
                    "start": "2013-12-05 15:00:00",
                    "end": "2013-12-05 17:00:00",
                    "backgroundColor": "#00ff00",
                    "allDay": false
                },
                {
                    "id": "3",
                    "title": "appt3",
                    "start": "2013-12-05 15:00:00",
                    "end": "2013-12-05 15:00:00",
                    "backgroundColor": "#ff00ff",
                    "allDay": false
                }
            ]
            }');
            $data = json_encode($data['data']);
    );
    
相关问题