Json Decode Sorunu
Merhabalar,
http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA
bu linkteki verileri json decode ile yazdırmak istiyorum ancak boş ekran çıkıyor.
Alttaki kodumda örneğin developer name i yazdırabiliyorum ancak ben mesela Motorin(Eurodiesel)_TL\/lt yazdırmak istediğimde parantezlerden ötürü hata alıyorum.
<?php
error_reporting(0);
$url = "http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$wisex = json_decode( curl_exec( $ch ) );
$name = $wisex->developer->name;
echo $name;
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
$json = file_get_contents('http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA');
$data = json_decode($json,true);
$veriler = $data['data'];
print_r($veriler);
Curl kullanmak yerine file_get_contents kullanabilirsin
$url = "https://hasanadiguzel.com.tr/api/akaryakit/sehir=Aksaray";
$file = file_get_contents($url);
$json = json_decode($file,true);
foreach ($json['data'] as $key=>$value){
// Bu kısımdada almak istediklerini alabilirsin
}
Bunu fonksiyon da yapabilirsin
Sorunu çözdüm süslü parantez içinde => data->{"anahtar"}
gibi kullanırsan sorunun çözülür.
Kaynak: https://www.php.net/manual/en/class.stdclass.php
<?php
error_reporting(0);
$url = "http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$wisex = json_decode( curl_exec( $ch ) );
$name = $wisex->data->{"17,62"}->{"Kursunsuz_95(Excellium95)_TL/lt"};
echo $name;
?>
Bu nasıl çözülür bilmiyorum. İlgimi çekti araştıracağım. İşini görülmesi açısından şimdilik aşağıdaki gibi kullanabilirsin.
<?php
error_reporting(0);
$url = "http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$wisex = json_decode( curl_exec( $ch ), 1 );
// İkinci parametre true olursa diziye dönüştürür. Boşsa veya false olursa ilişkisel nesneye dönüştürülür.
print_r($wisex["data"]["17,62"]["Motorin(Eurodiesel)_TL/lt"]);
?>