如何在 Laravel 5 中处理嵌套的 JSON 对象请求?
Posted
技术标签:
【中文标题】如何在 Laravel 5 中处理嵌套的 JSON 对象请求?【英文标题】:How to handle nested JSON object request in Laravel 5? 【发布时间】:2016-06-03 12:33:13 【问题描述】:我们在 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 已经过验证,我还设法获得了基本的 JSON,例如名称、endate 等,但不是嵌套对象。
我们在 Laravel 5 中使用这样的东西:
$incomingdata = $request->json()->all();
$name = $incomingdata->name; // works
$startdate = $incomingdata->startdate; // works
$coach_uuid = $incomingdata->coach()->uuid; // didn't work !!!
我如何做到这一点?
【问题讨论】:
我对这里发生的事情感到很困惑。那么客户端是否将 JSON 发送到服务器? @OliverQueen:正确!客户端将带有嵌套对象的 JSON 数据发送到运行在 Laravel 5 上的服务器。 好的,我绝对建议使用json_decode()
@OliverQueen :我对我的问题进行了调整以使其清楚。
print_r($incomingdata);
返回什么?
【参考方案1】:
你可以试试这个:
$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 中,有一种转换方法:使用 $request->json()->all();所以 $data = $request->json()->all();我可以通过 $data->name 或 $data->enddate 但不是嵌套对象 $data->coach->uuid 或 $data->category->uuid 轻松访问 我必须这样做才能工作:$coach_uuid = $incomingdata['coach']['uuid'];谢谢 !!!我认为 Laravel 有一种优雅的方式来实现这一点:)【参考方案2】:我不知道 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
【讨论】:
以上是关于如何在 Laravel 5 中处理嵌套的 JSON 对象请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 6 中存储和检索嵌套的 JSON 数组
如何访问嵌套的 json 对象? |在 Laravel 电子商务项目中显示订单]