解码laravel 4输入:: json()

时间:2014-04-27 18:19:31

标签: php json api laravel laravel-4

我很难在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/

2 个答案:

答案 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'];