如何处理 Laravel 5 中嵌套的 JSON 对象请求?

How to handle nested JSON object request in Laravel 5?

我们在 Laravel 5 和 AngularJs/Ionic 中有这个网络服务 运行 用于处理网络。当我们 post 从网络(客户端)请求到网络服务(后端)时,我们传递了嵌套的 JSON 对象。我们在服务器端读取父对象下的所有子对象时遇到问题。

{
    "name": "test",
    "description": "test",
    "startdate": "2016-02-21T13:00:00.000Z",
    "enddate": "2016-02-23T13:00:00.000Z",
    "coach": {
        "uuid": "76fdd664-d830-11e5-9d46-00ffc9587cbc"
    },
    "category": {
        "uuid": "771e6de4-d830-11e5-9d46-00ffc9587cbc"
    },
    "useruuid": "76d65a2d-d830-11e5-9d46-00ffc9587cbc",
    "routines": ["775b2726-d830-11e5-9d46-00ffc9587cbc"]
}

这个 JSON 已经过验证,我也设法得到了基本的,例如名称、结束等,但不是嵌套对象。

我们在 Laravel 5 中使用类似的东西:

$incomingdata = $request->json()->all();
$name = $incomingdata->name; // works
$startdate = $incomingdata->startdate; // works
$coach_uuid = $incomingdata->coach()->uuid; // didn't work !!!

如何实现?

你可以试试这个:

$phpArray = json_decode($jsonObject,true);
$name = $phpArray['name'];
$coach = $phpArray['coach'];
$coach_uuid = $phpArray['coach']['uuid'];
$category = $phpArray['category']; 
$category_uuid = $phpArray['category']['uuid]; 

我不知道 Laravel 5.0,但在 Laravel 5.6 我不得不做一些完全不同的事情。 None 其他答案中的代码对我有用。

以下是我发现可以正常工作的内容:

$name = $request->input('name');
$startdate = $request->input('startdate');
$coach_uuid = $request->input('coach.uuid');
print_r($name.'<br />');
print_r($startdate.'<br />');
print_r($coach_uuid.'<br />');

以上打印:

test
2016-02-21T13:00:00.000Z
76fdd664-d830-11e5-9d46-00ffc9587cbc

参考:https://laravel.com/docs/5.6/requests#retrieving-input