3
    $user = $this->User->find( 'all' );
    $this->set( 'users', $user );

我的控制器中有这段代码。

在我看来,我有这个。

echo json_encode( compact( 'users' ) );

它像这样输出json

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

无论如何要格式化它以删除包装在“用户”中的整个数组,并删除每个作为“用户”成员的对象。

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

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

谢谢你的帮助。

4

2 回答 2

7

我不完全理解“删除包含在“用户”中的整个数组”和“删除作为“用户”成员的每个对象”的意思,但是根据您想要的输出格式示例,您需要提取并将要编码的确切数据传递给json_encode,而不是使用 传递所有内容compact

可以使用SetHash类进行提取(取决于您的 Cake 版本)

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

json_encode(Set::extract('/User/.', $users));

应该给你一个这样的结构:

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

并且有多个用户,它应该看起来像这样

[{
    "user_id": "1",
    "email": "foo@test.com",
    "name": "Bar"
},
{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]
于 2012-10-21T20:18:28.857 回答
0

像这样使用:

$users= (Set::extract('/User/.', $users));
pr($users);

它将Model从结果数组中删除,然后json_encode或任何进一步的使用。

更多库函数Set class HereHash class Here

于 2014-05-20T08:41:29.120 回答