Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定制JSON输出CakePHP_Json_Cakephp_Json View - Fatal编程技术网

定制JSON输出CakePHP

定制JSON输出CakePHP,json,cakephp,json-view,Json,Cakephp,Json View,我的控制器中有此代码 在我看来,我有这个 $user = $this->User->find( 'all' ); $this->set( 'users', $user ); 它像这样输出json echo json_encode( compact( 'users' ) ); [{ "user_id": "2", "email": "email@test.com", "name": "Blah" }] 是否需要格式化此文件以删除“us

我的控制器中有此代码

在我看来,我有这个

    $user = $this->User->find( 'all' );
    $this->set( 'users', $user );
它像这样输出json

echo json_encode( compact( 'users' ) );
[{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]
是否需要格式化此文件以删除“users”中包装的整个数组,并删除作为“User”成员的每个对象

这使得它更难在前端使用。我希望它看起来像这样

    {
    "users": [{
        "User": {
            "user_id": "2",
            "email": "email@test.com",
            "name": "Blah"
        }]
    }
}

感谢您的帮助。

我不完全理解您所说的“删除“用户”中包装的整个数组”和“删除“用户”中的每个对象”,但根据您所需的输出格式示例,您需要提取并传递要编码为
json\u encode
的确切数据,而不是使用
compact
传递所有数据

可以使用或类进行提取(取决于您的蛋糕版本)

假设您的模型以默认的CakePHP格式返回数据,例如:

[{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]
应该给你一个这样的结构:

json_encode(Set::extract('/User/.', $users));
[{
    "user_id": "1",
    "email": "foo@test.com",
    "name": "Bar"
},
{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]
对于多个用户,它应该是这样的

echo json_encode( compact( 'users' ) );
[{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]
这样使用:

json_encode(Set::extract('/User/.', $users));
[{
    "user_id": "1",
    "email": "foo@test.com",
    "name": "Bar"
},
{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]
它将从结果数组中删除
Model
,然后删除
json\u encode
或任何其他用法

更多图书馆功能和