web-dev-qa-db-fra.com

Récupérez les données d'un fichier JSON avec PHP

J'essaie d'obtenir des données du fichier JSON suivant en utilisant PHP. Je veux spécifiquement "temperatureMin" et "temperatureMax".

C'est probablement très simple, mais je ne sais pas comment faire cela. Je suis bloqué sur ce qu'il faut faire après file_get_contents ("file.json"). Une aide serait grandement appréciée!

{
    "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,
            }
        ]
    }
}
101
Harold Dunn

Obtenez le contenu du fichier JSON en utilisant file_get_contents() :

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

Maintenant, décodez le JSON en utilisant json_decode() :

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

Vous avez un tableau associatif contenant toutes les informations. Pour savoir comment accéder aux valeurs dont vous avez besoin, vous pouvez procéder comme suit:

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

Ceci imprimera le contenu du tableau dans un format lisible par Nice. Notez que le deuxième paramètre est défini sur true afin de permettre à print_r() de savoir que le résultat doit être return ed (plutôt que simplement imprimé à l'écran). Ensuite, vous accédez aux éléments de votre choix, comme suit:

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

Ou parcourez le tableau comme vous le souhaitez:

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

Démo!

244
Amal Murali

Utilisez json_decode pour transformer votre JSON en un tableau PHP. Exemple:

$json = '{"a":"b"}';
$array = json_decode($json, true);
echo $array['a']; // b
8
Guilherme Sehn
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/>';
                }
            }
        }
8
Indrajeet Singh