5

I am having a hard time decoding json input in laravel .. am building a Restful API and when i send post data using RestClient and then die and dump in laravel i got

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"
  }
}

Now i have tied to access the data using

$data = Input::json();
echo $data->firstName;

that does not work .. tried to convert it to array and then access like $data['firstName'] does not work .

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"
  }
}

i want to decode the data then save it to db, Here is a tutorial building similar App ..

I have tried the post_index() method explained here but no luck .

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

sh0umik
  • 1,549
  • 2
  • 17
  • 27
  • As you can see `firstName` is inside of the `*parameters` array, hence can be accessed by `$data['*parameters']['firstName']`, however there's probably a reason that they're protected. – h2ooooooo Apr 27 '14 at 18:21
  • tried that too but no luck – sh0umik Apr 27 '14 at 18:26

2 Answers2

9

You can use ->get() to access properties from a Symfony\Component\HttpFoundation\ParameterBag response.

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

You can also get all inputs as an array and then type cast it to an object with (object). Note that this will throw an error if your property doesn't exists, so if I where you, I would use the ->get() method mentioned above.

$input = (object)Input::all();
$input->firstName;
Marwelln
  • 28,492
  • 21
  • 93
  • 117
2

Based on my experiment

If you are sending an array of multiple objects like the following example from the Javascript using JSON

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

You need to use Input::json()->all() function in PHP.

$arr = Input::json()->all();
$crop_id = $arr[0]['crop_id'];
$test_id = $arr[0]['test_id'];
Dean Chiu
  • 1,325
  • 1
  • 13
  • 13