解码 laravel 4 输入::json()

Posted

技术标签:

【中文标题】解码 laravel 4 输入::json()【英文标题】:Decode laravel 4 Input::json() 【发布时间】:2014-06-13 04:16:10 【问题描述】:

我很难在 laravel 中解码 json 输入。我正在构建一个 Restful API,当我使用 RestClient 发送发布数据然后在 laravel 中死掉并转储时,我得到了

object(Symfony\Component\HttpFoundation\ParameterBag)#205 (1) 
  ["parameters":protected]=>
  array(6) 
    ["firstName"]=>
    string(8) "John"
    ["lastName"]=>
    string(7) "Doe"
    ["bloodGroup"]=>
    string(2) "B+"
    ["phone"]=>
    string(8) "+9999999"
    ["address"]=>
    string(8) "Somecity"
    ["symptoms"]=>
    string(3) "Bla"
  

现在我已经绑定到使用

访问数据
$data = Input::json();
echo $data->firstName;

这不起作用..尝试将其转换为数组然后访问 像$data['firstName'] 不起作用。

array(1) 
  ["*parameters"] =>
  array(6) 
    ["firstName"]=>
    string(8) "John"
    ["lastName"]=>
    string(7) "Doe"
    ["bloodGroup"]=>
    string(2) "B+"
    ["phone"]=>
    string(8) "+9999999"
    ["address"]=>
    string(8) "Somecity"
    ["symptoms"]=>
    string(3) "Bla"
  

我想解码数据然后将其保存到数据库,这是一个构建类似应用程序的教程..

我已经尝试过这里解释的 post_index() 方法,但没有成功。

http://maxoffsky.com/maxoffsky-blog/building-restful-api-in-laravel-part-2-design-api-controller/

【问题讨论】:

如您所见,firstName 位于*parameters 数组内,因此可以被$data['*parameters']['firstName'] 访问,但可能是因为它们受到保护。 也试过了,但没有成功 【参考方案1】:

您可以使用->get() 访问来自Symfony\Component\HttpFoundation\ParameterBag 响应的属性。

$input = Input::json();
$input->get('firstName')

您还可以将所有输入作为数组获取,然后使用(object) 将其类型转换为对象。请注意,如果您的属性不存在,这将引发错误,因此如果我在您所在的位置,我将使用上面提到的->get() 方法。

$input = (object)Input::all();
$input->firstName;

【讨论】:

object(stdClass)#205 (0) @user2202757,这意味着你的对象是空的。 Well Input::all() 返回一个空数组 我使用 var_dump 查看 Input::all() 抓取的所有输入数据,然后它返回一个空数组和错误,但如果我使用 dd() 那么我可以看到数据。奇怪的问题。 . 但是谢谢 Input::all() 工作正常.... @user2202757 您必须将请求的“Content-Type”标头设置为“application/json”才能在 Input::all() 集合中查看这些输入。【参考方案2】:

根据我的实验

如果您使用 JSON 从 javascript 发送多个对象的数组,如下例所示

[crop_id: 1, test_id: 6,crop_id: 1, test_id: 7,crop_id: 1, test_id: 8]

您需要在 php 中使用 Input::json()->all() 函数。

$arr = Input::json()->all();
$crop_id = $arr[0]['crop_id'];
$test_id = $arr[0]['test_id'];

【讨论】:

以上是关于解码 laravel 4 输入::json()的主要内容,如果未能解决你的问题,请参考以下文章

使用 JSON 解码 Laravel 检索特定数据

如何在 Laravel 中解码 JSON 对象

如何在 laravel 中解码 Json 对象并在 laravel 中应用 foreach 循环

response()->json 无法在 Laravel 中解码 [关闭]

如何在关系表laravel 5.8中解码Json数据

如何在laravel刀片中从json解码中回显键名和键值