Maison  >  Article  >  développement back-end  >  Comment analyser correctement les données JSON imbriquées en PHP ?

Comment analyser correctement les données JSON imbriquées en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-16 01:15:03705parcourir

How to Properly Parse Nested JSON Data in PHP?

Analyse d'objets JSON en PHP avec json_decode

Lorsque vous essayez de récupérer des données météorologiques à partir d'un service Web au format JSON, vous pouvez rencontrer des défis. Un code de requête PHP courant qui échoue :

$url = "http://www.worldweatheronline.com/feed/weather.ashx?q=schruns,austria&format=json&num_of_days=5&key=8f2d1ea151085304102710";
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
echo $data[0]->weather->weatherIconUrl[0]->value;

Pour comprendre le problème, examinons les données JSON que vous avez reçues :

{
  "data": {
    "current_condition": [...],
    "request": [...],
    "weather": [
      {
        "date": "2010-10-27",
        "precipMM": "0.0",
        "tempMaxC": "3",
        "tempMaxF": "38",
        "tempMinC": "-13",
        "tempMinF": "9",
        "weatherCode": "113",
        "weatherDesc": [{ "value": "Sunny" }],
        "weatherIconUrl": [{ "value": "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png" }],
        "winddir16Point": "N",
        "winddirDegree": "356",
        "winddirection": "N",
        "windspeedKmph": "5",
        "windspeedMiles": "3"
      },
      ...
    ]
  }
}

Remarquez que les données météorologiques sont imbriquées dans l'objet "données". Par conséquent, pour analyser correctement le JSON, vous devez modifier votre code :

$url = 'http://www.worldweatheronline.com/feed/weather.ashx?q=schruns,austria&format=json&num_of_days=5&key=8f2d1ea151085304102710';
$content = file_get_contents($url);
$json = json_decode($content, true);

foreach ($json['data']['weather'] as $item) {
    print $item['date'];
    print ' - ';
    print $item['weatherDesc'][0]['value'];
    print ' - ';
    print '<img src="' . $item['weatherIconUrl'][0]['value'] . '" border="0" alt="" />';
    print '<br>';
}

Définir le deuxième paramètre de json_decode sur true vous donne un tableau, vous permettant d'accéder aux données en utilisant l'indexation de tableau. L'extension JSONview Firefox peut également aider à visualiser les structures JSON et à simplifier l'analyse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn