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/
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;
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'];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With