如何在Laravel 5中获取原始的JSON请求有效载荷?

12

假设这是一个请求的有效负载:

{name : 'John', age: 42}

您可以使用Request::all()获取所有参数。

如果负载是原始类型如true42,如何正确地获取请求有效载荷?

Request::getContent()将其作为字符串接收,我也希望它们以正确的类型出现。

1个回答

27
您可以使用json_decode将原始的json负载解码为一个数组:
Route::post('/request', function () {
    $payLoad = json_decode(request()->getContent(), true);

    dd($payLoad['name']);
});

你应该获得

John

或者可以使用json_decode来解码你的载荷,从查询参数或者POST数据中获取:

Route::get('/primitive', function () {
    $payLoad = json_decode(request()->get('payload'));

    dd($payLoad);
});

触发:

http://app.dev/primitive?payload={%20%22name%22:%20%22John%22,%20%22age%22:%2042,%20%22male%22:%20true%20}

你应该获得:

在此输入图片描述


2
负载不是键值对,而是POST请求正文中的JSON值。我可以使用json_decode(request()->getContent())。谢谢。 - zarax
我的解决方案应该也可以:https://stackoverflow.com/questions/2690654/how-to-get-the-real-type-of-a-value-inside-string - agm1984

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接