【问题标题】:Customizing JSON output CakePHP自定义 JSON 输出 CakePHP
【发布时间】:2012-10-11 16:07:20
【问题描述】:
    $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"
}]

感谢您的帮助。

【问题讨论】:

    标签: json cakephp json-view


    【解决方案1】:

    我不完全理解您所说的“删除包含在“users”中的整个数组”和“删除所有对象“用户”的成员”,但根据您想要的输出格式示例,您需要提取您想要编码的确切数据并将其传递给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"
    }]
    

    【讨论】:

      【解决方案2】:

      这样使用:

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

      它将从结果数组中删除 Model,然后删除 json_encode 或任何其他用途。

      更多库函数Set class HereHash class Here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-27
        • 1970-01-01
        • 1970-01-01
        • 2016-04-20
        • 2017-05-18
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多