Afzal Ali
Afzal Ali

Reputation: 1066

Laravel: Access key value from json type string

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

Upvotes: 2

Views: 6844

Answers (3)

Arinzehills
Arinzehills

Reputation: 2329

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

Upvotes: 0

Afzal Ali
Afzal Ali

Reputation: 1066

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);

Upvotes: 4

John Lobo
John Lobo

Reputation: 15319

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]);
}

Upvotes: 1

Related Questions