Laravel: Access key value from json type string

Viewed 1190

I got this data from request in Laravel

{"value":"QWS Welding Supply Solutions, Taylor Street","latitude":-27.4495148,"longitude":153.0696076}

but i am not able to access keys individually i.e value, latitude, longitude. I have tried json_decode but that's not working.

This is my controller method

public function saveLocation(Request $request){
    $location = $request->all();
    Location::create(['address'=>$location->value,'long'=>$location->longitude,'lat'=>$location->latitude]);
}

basically i want to save location data from request to database. in the $location object i got data that i pasted on top

3 Answers

I don't know what's wrong with simple json_decode but I resolved my issue by using json_decode inside foreach loop and then accessing key pair values

foreach (json_decode($location) as $key => $value) {
    if($key=="value")
        $obj['address'] = $value;
    else
        $obj[$key] = $value;
}
Location::create($obj);

Json decode works properly for mentioned json.If $location return mentioned json then

$data='{"value":"QWS Welding Supply Solutions, Taylor Street","latitude":-27.4495148,"longitude":153.0696076}';

dd(json_decode($data)->latitude);

so it should be

public function saveLocation(Request $request){
    $location = json_decode($request->all());
    Location::create(['address'=>$location->value,'long'=>$location->longitude,'lat'=>$location->latitude]);
}

If you have a json like this

{"value":"QWS Welding Supply Solutions, Taylor Street","latitude":-27.4495148,"longitude":153.0696076}

you can do like this to access the values

$json = {"value":"QWS Welding Supply Solutions, Taylor Street","latitude":-27.4495148,"latitude":153.0696076};

the you can access the values like this

$json = json_decode($json, true);
echo $json['value'];
echo $json['latitude'];
echo $json['latitude'];

I hope it helps some one

Related