POST 与 Silex 嵌套 Json
POST nested Json with Silex
我是 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);
});
感谢您的帮助
其实很简单。在你解码你的 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']
我是 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);
});
感谢您的帮助
其实很简单。在你解码你的 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']