I have a json object from a curl get request.
// Curl Stuff
$resp = curl_exec($curl);
{"food": {"id":585897,"foodGroup":"meats","calories":1109,"foodTier":30}}
I saved it in a variable with json_decode
$data = json_decode($resp, TRUE);
I've tried accessing the data in a couple ways but I get no response
echo $data[0][1];
echo $data[0]['id'];
Also if someone can point me in the right direction of looping through this data I would appreciate that.
With the true parameter in your json_decode, you have associative array, so it must be:
echo $data['food']['id'];
Get the id by numeric:
$da = array();
foreach($data as $key=>$val){
$da[$key] = array_values($val);
}
print_r($da);
echo $da['food'][0];
Related
I'm doing a curl and getting the JSON result as:
$data = json_decode($result, true);
var_dump($data);
$data = $data["data"];
echo $data;
However, the echo of $data is "{". If I do a var_dump before assigning again the variable I see:
string(727796) "{"data":["base64_image1", "base64_image2",... ]}"
Why am I not able to access the data list? I just want to do a foreach over this list, but I cannot.
output is json so try to json_decode() again
I'm trying to get current USD/EUR rate using this api link:
http://api.fixer.io/latest?base=USD&symbols=EUR
Using this code:
$url = "http://api.fixer.io/latest?base=USD&symbols=EUR";
$json = json_decode(file_get_contents($url), true);
$price = $json->rates[0]->EUR;
I want result of $price to be like: "0.84782",
but it seems I'm doing something wrong?
<?php
$url = "http://api.fixer.io/latest?base=USD&symbols=EUR";
$json = json_decode(file_get_contents($url), true);
$price=$json['rates']['EUR'];
echo $price;
This will work for you. The price you are looking for is a nested array so you must first access the parent one.
You are passing true to json_decode, so the returned value is an array. To use object instead, remove true, like so:
$json = json_decode(file_get_contents($url));
Access it like this:
echo $json->rates->EUR; // Output is: 0.84782
If you want to access array style:
$json = json_decode(file_get_contents($url), true);
echo $json['rates']['EUR']; // 0.84782
I'm trying to get data onto my website by parsing data from a JSON format. The URL is http://api.bfhstats.com/api/onlinePlayers and I'm trying to output for example the currently players online on PC.
Here's the current code I have:
<?$json = file_get_contents("http://api.bfhstats.com/api/onlinePlayers");
$data = json_decode($jsondata, true);
echo $data->pc->peak24;?>
I thought this would work, however it's not displaying anything. I am very new to parsing JSON data so if someone could explain what I'm doing wrong that would be brilliant.
change:
$data = json_decode($jsondata, true);
to
$data = json_decode($json, true);
Also, json_decode returns an array so use:
echo $data['pc']['peak24'];
to access the data.
You first call the variable $json but then use $jsondata in json_decode.
You are missing the foreach cycle to fetch the two dimensional array $data:
<?php
$json = file_get_contents("http://api.bfhstats.com/api/onlinePlayers");
$data=array();
$data = json_decode($json, true);
//print_r ($data);
foreach ($data as $pc) {
echo $pc["peak24"]."<br>";
}
?>
Check the $json and $jsondata that have different name but should be the same.
json response as below:
{"Success":true,"ErrorCode":0,"UserInformation":{"UserID":"19"}......
how do I get the UserID value by using json_decode?
I tried the below code with no luck.
$Response = json_decode($Response[2]);
echo $Response[0][0][0];
This should work:
<?php
$json = '{"Success":true, "ErrorCode":"0","UserInformation":{"UserID":"19"}}';
$response = json_decode($json, true);
echo $userId = $response["UserInformation"]["UserID"];
?>
Please check the PHP documentation of json_decode at http://php.net/json_decode
You can use object as well if you skip the second parameter of the json_decode function.
I am trying to output the comments of a facebook page in PHP. For example:
http://graph.facebook.com/comments/?ids=http://www.example.com
Can someone please explain how to decode this correctly so I can have all comments appearing on a page?
I have tried a couple of different scripts/expamples but they all seem to be returning no results or an error, so i think maybe the graph API has changed since.
//get the json string from URL
$data = file_get_contents("http://www.example.com");
//transform json to associative array
$data = json_decode($data, true);
//use only the comments array
$comments = $data['http://www.example.com']['comments']['data'];
foreach($comments as $comment) {
echo $comment['from']['name'];
echo $comment['message'];
}
//get the json string from URL
$data = file_get_contents("http://graph.facebook.com/comments/?ids=http://www.example.com");
//transform json to associative array
$data = json_decode($data, true);
//use only the comments array
$comments = $data['http://www.example.com']['comments']['data'];
//you should only see the comments array printed
echo "<pre>"; print_r($comments); echo "</pre>";