【问题标题】:How to parse a JSON a data point from the following JSON using PHP如何使用 PHP 从以下 JSON 解析 JSON 数据点
【发布时间】:2018-02-27 23:23:05
【问题描述】:

我一直在尝试解析一些 JSON 来获取一条数据。我是 JSON 新手,但我认为我正在从字典中解析数据,该数组本身是从字典中选择的。

我一直在尝试使用以下 PHP 从下面的示例中解析公制温度:

$temp_c = $parsed_json->{'hourly_forecast'}[0]->{'FCTTIME'}->{'temp'}->{'metric'};

我将2 用于重复 API 响应的第三个条目,但对于此提取,它在技术上是 0。

(长)样本是这样的:

{
  "response": {
  "version":"0.1",
  "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
  "features": {
  "hourly": 1
  }
    }
        ,
    "hourly_forecast": [
        {
        "FCTTIME": {
        "hour": "23","hour_padded": "23","min": "00","min_unpadded": "0","sec": "0","year": "2018","mon": "2","mon_padded": "02","mon_abbrev": "Feb","mday": "27","mday_padded": "27","yday": "57","isdst": "0","epoch": "1519772400","pretty": "11:00 PM GMT on February 27, 2018","civil": "11:00 PM","month_name": "February","month_name_abbrev": "Feb","weekday_name": "Tuesday","weekday_name_night": "Tuesday Night","weekday_name_abbrev": "Tue","weekday_name_unlang": "Tuesday","weekday_name_night_unlang": "Tuesday Night","ampm": "PM","tz": "","age": "","UTCDATE": ""
        },
        "temp": {"english": "34", "metric": "1"},
        "dewpoint": {"english": "21", "metric": "-6"},
        "condition": "Mostly Cloudy",
        "icon": "mostlycloudy",
        "icon_url":"http://icons.wxug.com/i/c/k/nt_mostlycloudy.gif",
        "fctcode": "3",
        "sky": "76",
        "wspd": {"english": "15", "metric": "24"},
        "wdir": {"dir": "ENE", "degrees": "75"},
        "wx": "Mostly Cloudy",
        "uvi": "0",
        "humidity": "60",
        "windchill": {"english": "24", "metric": "-4"},
        "heatindex": {"english": "-9999", "metric": "-9999"},
        "feelslike": {"english": "24", "metric": "-4"},
        "qpf": {"english": "0.0", "metric": "0"},
        "snow": {"english": "0.0", "metric": "0"},
        "pop": "21",
        "mslp": {"english": "30.21", "metric": "1023"}
        }
        ,
        {
        "FCTTIME": {

等

对于任何歧义或错误,我很抱歉,我很乐意澄清任何事情。提前谢谢你。

【问题讨论】:

    标签: php html json api


    【解决方案1】:

    看起来FCTTIME 部分是您的错误。 temp 是 FCTTIME 的兄弟姐妹,而不是它的孩子。

    此外,您不需要对这些键使用复杂的(大括号)语法。只有那些不是有效属性名称的东西才真正需要,比如以数字开头的字符串等。

    这应该可行:

    $temp_c = $parsed_json->hourly_forecast[0]->temp->metric;
    

    【讨论】:

    • 谢谢!没想到他们是兄妹,太好了。 (还不让我接受答案,但我很快就会接受。)也很高兴从我的解析中消除一些混乱,加载这些文件。
    猜你喜欢
    • 2017-12-13
    • 2014-04-07
    • 1970-01-01
    • 2013-11-15
    • 2015-08-12
    • 2015-12-09
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    相关资源
    最近更新 更多