Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to force abstract JSON data only from an API response?

Description

I'm trying to make a request to an API via PHP cURL

$access_token = $tokens['access_token'];
$headers = array(
  "Authorization: Bearer " . $access_token
  );

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,env('USER_INFO'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_USERAGENT,'php');
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
$info = curl_getinfo($ch);

$userInfo = curl_exec($ch);
$userInfo = json_decode($userInfo, true);

dd($userInfo);

I kept getting this back

{"sub":"acr:123;type=STAT","updated_at":1509463516,"name":"User","email":"[email protected]"} 1


Try #2

If I do

$userInfo = json_encode($userInfo, true);

I got

{"sub":"acr:123;type=STAT","updated_at":1509463516,"name":"User","email":"[email protected]"} "true"


How do I get rid of the 1 or true below it, and only get the JSON data?

Is there another param for json_decode() that I need to pass in?

like image 301
code-8 Avatar asked Dec 02 '25 20:12

code-8


1 Answers

Set the CURLOPT_RETURNTRANSFER curl option. curl_exec is just returning true without that, (it echoes the response and returns true; see curl_exec return values) and json_decode(true) is true.

How would one go about and debug this further?

A couple of things to experiment with:

  1. Remove $userInfo = json_decode($userInfo, true); and dd($userInfo);. Without the CURLOPT_RETURNTRANSFER option set, you should still see the non-decoded JSON, but not the true or 1.

  2. Add another dd($userInfo); before the json_decode. You'll see what curl_exec actually returned, which may help you eliminate json_decode as a possible cause for this odd looking behavior.

like image 69
Don't Panic Avatar answered Dec 05 '25 09:12

Don't Panic



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!