首页 > 解决方案 > 如何从 JSON 数据中解析数据?

问题描述

我从 DarkSky(天气 API)收到了大量数据,我想获得"summary".

它应该是 JSON 格式,然后我已经翻译成字典。但是,python 将其识别"data"为列表,而不是字典。我将如何"summary"从这些数据中获取价值?

darkSkyURL ="https://api.darksky.net/forecast/###Key has Been Removed###/{},{},{}?exclude=minutely,currently,flags,hourly".format(latitude, longitude, unixTime) #creates appropriate url, using known Long, Lang and current epoch time. These values are formatted into the url
darkSkyReport = requests.get(darkSkyURL)
darkSkyData = darkSkyReport.json()
print(darkSkyData["daily"]["data"]["summary"]))

解析后的数据如下:

{
    'latitude': REMOVED,
    'longitude': REMOVED,
    'timezone': 'Europe/London',
    'daily': {
        'data': [{
            'time': 1568156400,
            'summary': 'Mostly cloudy throughout the day.',
            'icon': 'rain',
            'sunriseTime': 1568180039,
            'sunsetTime': 1568226922,
            'moonPhase': 0.43,
            'precipIntensity': 0.0059,
            'precipIntensityMax': 0.0392,
            'precipIntensityMaxTime': 1568160000,
            'precipProbability': 0.71,
            'precipType': 'rain',
            'temperatureHigh': 65.89,
            'temperatureHighTime': 1568210400,
            'temperatureLow': 53.98,
            'temperatureLowTime': 1568268000,
            'apparentTemperatureHigh': 65.89,
            'apparentTemperatureHighTime': 1568210400,
            'apparentTemperatureLow': 53.98,
            'apparentTemperatureLowTime': 1568268000,
            'dewPoint': 50.7,
            'humidity': 0.72,
            'pressure': 1016.26,
            'windSpeed': 14.02,
            'windGust': 36.33,
            'windGustTime': 1568206800,
            'windBearing': 254,
            'cloudCover': 0.54,
            'uvIndex': 4,
            'uvIndexTime': 1568203200,
            'visibility': 6.776,
            'ozone': 272.7,
            'temperatureMin': 53.14,
            'temperatureMinTime': 1568160000,
            'temperatureMax': 65.89,
            'temperatureMaxTime': 1568210400,
            'apparentTemperatureMin': 53.14,
            'apparentTemperatureMinTime': 1568160000,
            'apparentTemperatureMax': 65.89,
            'apparentTemperatureMaxTime': 1568210400
        }]
    },
    'offset': 1
}

标签: pythonjsondarksky

解决方案


数据数组中的索引然后加载摘要对象

darkSkyURL ="https://api.darksky.net/forecast/###Key has Been Removed###/{},{},{}?exclude=minutely,currently,flags,hourly".format(latitude, longitude, unixTime) #creates appropriate url, using known Long, Lang and current epoch time. These values are formatted into the url
darkSkyReport = requests.get(darkSkyURL)
darkSkyData = darkSkyReport.json()
summary = darkSkyData["daily"]["data"][0]["summary"]

推荐阅读