【问题标题】:POST nested Json with Silex使用 Silex 发布嵌套的 Json
【发布时间】:2015-05-26 13:56:20
【问题描述】:

我是 Silex 的新手,我正在尝试使用 POST 检索嵌套的 Json 数据。这是 Json 部分。

{
    "action": "opened",
    "number": 3,
    "pull_request": {
        "id": 35845110,
        "number": 3,
        "state": "open",
        "locked": false,
        "title": "Kie"
    }
}

我的代码适用于 action、number 和 pull_request,但我只想使用 pull_request 中的数据状态,我不知道如何收集它。

$app->before(function (Request $request) {
    if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
        $data =json_decode($request->getContent(), true);
        $request->request->replace(is_array($data) ? $data : array());
    }
});

$app->post('/api', function(Request $request) use ($app) {

    $pullRequest = array(
        'action' => $request->request->get('action'),
        'number' => $request->request->get('number'),
        'pull_request' => $request->request->get('pull_request'),
        'state' => $request->request->get('state')
    );
    return $app->json($pullRequest,201);
});

感谢您的帮助

【问题讨论】:

    标签: php json post silex


    【解决方案1】:

    其实很简单。在你解码你的 json 对象后,pull_request 变成了一个数组,因此如果你想访问state,你需要先引用pull_request。一种方法是所谓的array dereferencing,如下所示:

    'state' => $request->request->get('pull_request')['state']

    但要使用该语法,您的 PHP 版本必须至少为 5.4

    您还可以将pull_request 分配给一个变量,并像使用任何其他数组一样使用它。

    $pullRequest = $request->request->get('pull_request');
    
    //....
    'state' => $pullRequest['state']
    

    【讨论】:

    • 就是这样,谢谢老兄
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多