PHP ile JSON dosyasından veri alma

PHP kullanarak aşağıdaki JSON dosyasından veri almaya çalışıyorum. Özellikle "temperatureMin" ve "temperatureMax" istiyorum.

Muhtemelen çok basittir, ama bunu nasıl yapacağım hakkında hiçbir fikrim yok. file_get_contents("file.json") komutundan sonra ne yapmam gerektiği konusunda takıldım. Biraz yardım çok makbule geçer!

{
    "daily": {
        "summary": "No precipitation for the week; temperatures rising to 6° on Tuesday.",
        "icon": "clear-day",
        "data": [
            {
                "time": 1383458400,
                "summary": "Mostly cloudy throughout the day.",
                "icon": "partly-cloudy-day",
                "sunriseTime": 1383491266,
                "sunsetTime": 1383523844,
                "temperatureMin": -3.46,
                "temperatureMinTime": 1383544800,
                "temperatureMax": -1.12,
                "temperatureMaxTime": 1383458400,
            }
        ]
    }
}
Çözüm

JSON dosyasının içeriğini file_get_contents() kullanarak alın:

$str = file_get_contents('http://example.com/example.json/');

Şimdi json_decode() kullanarak JSON'un kodunu çözün:

$json = json_decode($str, true); // decode the JSON into an associative array

Tüm bilgileri içeren bir ilişkisel diziniz var. İhtiyacınız olan değerlere nasıl erişeceğinizi bulmak için aşağıdakileri yapabilirsiniz:

echo '<pre>' . print_r($json, true) . '</pre>';

Bu, dizinin içeriğini okunabilir bir biçimde yazdıracaktır. İkinci parametrenin print_r() fonksiyonuna çıktının return edilmesi gerektiğini (sadece ekrana yazdırılması yerine) bildirmek için true olarak ayarlandığına dikkat edin. Ardından, istediğiniz öğelere şu şekilde erişirsiniz:

$temperatureMin = $json['daily']['data'][0]['temperatureMin'];
$temperatureMax = $json['daily']['data'][0]['temperatureMax'];

Ya da dizide dilediğiniz gibi döngü oluşturun:

foreach ($json['daily']['data'] as $field => $value) {
    // Use $field and $value here
}

Demo!

Yorumlar (12)
Try:
$data = file_get_contents ("file.json");
        $json = json_decode($data, true);
        foreach ($json as $key => $value) {
            if (!is_array($value)) {
                echo $key . '=>' . $value . '<br/>';
            } else {
                foreach ($value as $key => $val) {
                    echo $key . '=>' . $val . '<br/>';
                }
            }
        }
Yorumlar (1)

JSON'unuzu bir PHP dizisine dönüştürmek için json_decode kullanın. Örnek

$json = '{"a":"b"}';
$array = json_decode($json, true);
echo $array['a']; // b
Yorumlar (0)