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

时间:2016-02-22 07:04:08

标签: php json laravel-5

我们在Laravel 5和AngularJs / Ionic中运行此Web服务来处理Web。当我们将请求从Web(客户端)发布到webservice(后端)时,我们传递了嵌套的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已经过验证,我也设法获得了一个基本的名称,如endate,endate等等,但不是嵌套对象之一。

我们在Laravel 5中使用这样的东西:

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

我如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

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

答案 1 :(得分:0)

我不了解Laravel 5.0,但在Laravel 5.6中,我必须做一些完全不同的事情。其他答案中的代码都没有为我工作。

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

$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