我很难在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"
}
}
我想解码数据然后将其保存到db,这是一个构建类似App的教程..
我已尝试过这里解释的post_index()方法,但没有运气。
http://maxoffsky.com/maxoffsky-blog/building-restful-api-in-laravel-part-2-design-api-controller/
答案 0 :(得分:9)
您可以使用->get()
来访问Symfony\Component\HttpFoundation\ParameterBag
响应中的属性。
$input = Input::json();
$input->get('firstName')
您还可以将所有输入作为数组获取,然后键入将其强制转换为(object)
的对象。请注意,如果您的媒体资源不存在,这会引发错误,所以如果我在哪里,我会使用上面提到的->get()
方法。
$input = (object)Input::all();
$input->firstName;
答案 1 :(得分: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'];