解码 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()的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 中解码 Json 对象并在 laravel 中应用 foreach 循环