首页  >  文章  >  后端开发  >  如何在 PHP 中正确解析嵌套的 JSON 数据?

如何在 PHP 中正确解析嵌套的 JSON 数据?

Barbara Streisand
Barbara Streisand原创
2024-11-16 01:15:03705浏览

How to Properly Parse Nested JSON Data in PHP?

使用 json_decode 解析 PHP 中的 JSON 对象

尝试从 JSON 格式的 Web 服务检索天气数据时,您可能会遇到挑战。不成功的常见 PHP 请求代码:

$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;

要了解该问题,让我们检查您收到的 JSON 数据:

{
  "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"
      },
      ...
    ]
  }
}

请注意,天气数据嵌套在“数据”对象。因此,要正确解析 JSON,您需要修改代码:

$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>';
}

将 json_decode 的第二个参数设置为 true 会为您提供一个数组,允许您使用数组索引访问数据。 JSONview Firefox 扩展还可以帮助可视化 JSON 结构并简化解析。

以上是如何在 PHP 中正确解析嵌套的 JSON 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn