【发布时间】:2022-01-14 22:49:39
【问题描述】:
我刚刚开始使用 JSON,并正在尝试创建一个从气象站获取数据并将其记录到我的 python 程序中的程序。但是,数据的结构是这样的:
"timeSeries":[
{
"validTime":"2021-12-07T14:00:00Z",
"parameters":[
{
"name":"spp",
"levelType":"hl",
"level":0,
"unit":"percent",
"values":[
-9.0
]
},
{
"name":"pcat",
"levelType":"hl",
"level":0,
"unit":"category",
"values":[
0
]
},
{
"name":"pmin",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmean",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmax",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmedian",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"tcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
7
]
},
{
"name":"lcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
6
]
},
{
"name":"mcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
3.0
]
},
{
"name":"hcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
1
]
},
{
"name":"t",
"levelType":"hl",
"level":2,
"unit":"Cel",
"values":[
-11.3
]
},
{
"name":"msl",
"levelType":"hmsl",
"level":0,
"unit":"hPa",
"values":[
1017.5
]
},
{
"name":"vis",
"levelType":"hl",
"level":2,
"unit":"km",
"values":[
50.0
]
},
{
"name":"wd",
"levelType":"hl",
"level":10,
"unit":"degree",
"values":[
84
]
},
{
"name":"ws",
"levelType":"hl",
"level":10,
"unit":"m/s",
"values":[
1.6
]
},
{
"name":"r",
"levelType":"hl",
"level":2,
"unit":"percent",
"values":[
79
]
},
{
"name":"tstm",
"levelType":"hl",
"level":0,
"unit":"percent",
"values":[
0.0
]
},
{
"name":"gust",
"levelType":"hl",
"level":10,
"unit":"m/s",
"values":[
3.8
]
},
{
"name":"Wsymb2",
"levelType":"hl",
"level":0,
"unit":"category",
"values":[
4
]
}
]
},
{
"validTime":"2021-12-07T15:00:00Z",
"parameters":[
{
"name":"spp",
"levelType":"hl",
"level":0,
"unit":"percent",
"values":[
-9
]
},
{
"name":"pcat",
"levelType":"hl",
"level":0,
"unit":"category",
"values":[
0
]
},
{
"name":"pmin",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmean",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmax",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmedian",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"tcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
8
]
},
{
"name":"lcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
8
]
},
{
"name":"mcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
3
]
},
{
"name":"hcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
1
]
},
{
"name":"t",
"levelType":"hl",
"level":2,
"unit":"Cel",
"values":[
-11.2
]
},
{
"name":"msl",
"levelType":"hmsl",
"level":0,
"unit":"hPa",
"values":[
1017.5
]
},
{
"name":"vis",
"levelType":"hl",
"level":2,
"unit":"km",
"values":[
50.0
]
},
{
"name":"wd",
"levelType":"hl",
"level":10,
"unit":"degree",
"values":[
85
]
},
{
"name":"ws",
"levelType":"hl",
"level":10,
"unit":"m/s",
"values":[
1.7
]
},
{
"name":"r",
"levelType":"hl",
"level":2,
"unit":"percent",
"values":[
83
]
},
{
"name":"tstm",
"levelType":"hl",
"level":0,
"unit":"percent",
"values":[
0
]
},
{
"name":"gust",
"levelType":"hl",
"level":10,
"unit":"m/s",
"values":[
4.0
]
},
{
"name":"Wsymb2",
"levelType":"hl",
"level":0,
"unit":"category",
"values":[
6
]
}
]
},
{
"validTime":"2021-12-07T16:00:00Z",
"parameters":[
{
"name":"spp",
"levelType":"hl",
"level":0,
"unit":"percent",
"values":[
-9
]
},
{
"name":"pcat",
"levelType":"hl",
"level":0,
"unit":"category",
"values":[
0
]
},
{
"name":"pmin",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmean",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmax",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmedian",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"tcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
8.0
]
},
{
"name":"lcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
8
]
},
{
"name":"mcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
2
]
},
{
"name":"hcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
2.0
]
},
{
"name":"t",
"levelType":"hl",
"level":2,
"unit":"Cel",
"values":[
-11.0
]
},
{
"name":"msl",
"levelType":"hmsl",
"level":0,
"unit":"hPa",
"values":[
1017.4
]
},
{
"name":"vis",
"levelType":"hl",
"level":2,
"unit":"km",
"values":[
50.0
]
},
{
"name":"wd",
"levelType":"hl",
"level":10,
"unit":"degree",
"values":[
89
]
},
{
"name":"ws",
"levelType":"hl",
"level":10,
"unit":"m/s",
"values":[
1.7
]
},
{
"name":"r",
"levelType":"hl",
"level":2,
"unit":"percent",
"values":[
88
]
},
{
"name":"tstm",
"levelType":"hl",
"level":0,
"unit":"percent",
"values":[
0
]
},
{
"name":"gust",
"levelType":"hl",
"level":10,
"unit":"m/s",
"values":[
4.1
]
},
{
"name":"Wsymb2",
"levelType":"hl",
"level":0,
"unit":"category",
"values":[
6
]
}
]
},
{
"validTime":"2021-12-07T17:00:00Z",
"parameters":[
{
"name":"spp",
"levelType":"hl",
"level":0,
"unit":"percent",
"values":[
-9.0
]
},
{
"name":"pcat",
"levelType":"hl",
"level":0,
"unit":"category",
"values":[
0
]
},
{
"name":"pmin",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmean",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmax",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"pmedian",
"levelType":"hl",
"level":0,
"unit":"kg/m2/h",
"values":[
0.0
]
},
{
"name":"tcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
8
]
},
{
"name":"lcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
8
]
},
{
"name":"mcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
1.0
]
},
{
"name":"hcc_mean",
"levelType":"hl",
"level":0,
"unit":"octas",
"values":[
5
]
},
{
"name":"t",
"levelType":"hl",
"level":2,
"unit":"Cel",
"values":[
-11.0
]
},
{
"name":"msl",
"levelType":"hmsl",
"level":0,
"unit":"hPa",
"values":[
1017.2
]
},
{
"name":"vis",
"levelType":"hl",
"level":2,
"unit":"km",
"values":[
8.0
]
},
{
"name":"wd",
"levelType":"hl",
"level":10,
"unit":"degree",
"values":[
87
]
},
{
"name":"ws",
"levelType":"hl",
"level":10,
"unit":"m/s",
"values":[
1.6
]
},
{
"name":"r",
"levelType":"hl",
"level":2,
"unit":"percent",
"values":[
91
]
},
{
"name":"tstm",
"levelType":"hl",
"level":0,
"unit":"percent",
"values":[
0.0
]
},
{
"name":"gust",
"levelType":"hl",
"level":10,
"unit":"m/s",
"values":[
4.1
]
},
{
"name":"Wsymb2",
"levelType":"hl",
"level":0,
"unit":"category",
"values":[
6
]
}
]
}
如您所见,timeSeries 字典中有一个参数列表。我试图每次都获得pcatvalue。我设法从字典中获取列表,但没有从列表中获取特定值。我一直在尝试多种方式,例如 for 循环等。
我目前拥有的代码是
import urllib
from urllib import request
import json
import argparse
from time import strftime, localtime
from datetime import datetime, timedelta
import numpy as np
debug = False
hours = (datetime.now() + timedelta(hours=1)).strftime("%Y-%m-%dT%H:00:00Z")
print(hours)
longitude=12
latitude=58
if debug:
print(hours, longitude, latitude)
url='http://opendata-download-metfcst.smhi.se/api/category/pmp1g/version/1/geopoint/lat/'+str(latitude)+'/lon/'+str(longitude)+'/data.json'
url='https://opendata-download-metfcst.smhi.se/api/category/pmp3g/version/2/geotype/point/lon/'+str(longitude)+'/lat/'+str(latitude)+'/data.json'
print(url)
if debug:
print(url)
j = urllib.request.urlopen(url)
j_obj = json.load(j)
j_objt=j_obj['timeSeries']
new=[]
for i in j_objt:
print(i)
这给了我以下输出:
{'validTime': '2021-12-10T08:00:00Z', 'parameters': [{'name': 'spp', 'levelType': 'hl', 'level': 0, 'unit': 'percent', 'values': [-9]}, {'name': 'pcat', 'levelType': 'hl', 'level': 0, 'unit': 'category', 'values': [0]}, {'name': 'pmin', 'levelType': 'hl', 'level': 0, 'unit': 'kg/m2/h', 'values': [0.0]}, {'name': 'pmean', 'levelType': 'hl', 'level': 0, 'unit': 'kg/m2/h', 'values': [0.0]}, {'name': 'pmax', 'levelType': 'hl', 'level': 0, 'unit': 'kg/m2/h', 'values': [0.0]}, {'name': 'pmedian', 'levelType': 'hl', 'level': 0, 'unit': 'kg/m2/h', 'values': [0.0]}, {'name': 'tcc_mean', 'levelType': 'hl', 'level': 0, 'unit': 'octas', 'values': [8]}, {'name': 'lcc_mean', 'levelType': 'hl', 'level': 0, 'unit': 'octas', 'values': [6]}, {'name': 'mcc_mean', 'levelType': 'hl', 'level': 0, 'unit': 'octas', 'values': [2]}, {'name': 'hcc_mean', 'levelType': 'hl', 'level': 0, 'unit': 'octas', 'values': [6]}, {'name': 't', 'levelType': 'hl', 'level': 2, 'unit': 'Cel', 'values': [-0.3]}, {'name': 'msl', 'levelType': 'hmsl', 'level': 0, 'unit': 'hPa', 'values': [1002.4]}, {'name': 'vis', 'levelType': 'hl', 'level': 2, 'unit': 'km', 'values': [2.3]}, {'name': 'wd', 'levelType': 'hl', 'level': 10, 'unit': 'degree', 'values': [78]}, {'name': 'ws', 'levelType': 'hl', 'level': 10, 'unit': 'm/s', 'values': [1.6]}, {'name': 'r', 'levelType': 'hl', 'level': 2, 'unit': 'percent', 'values': [98]}, {'name': 'tstm', 'levelType': 'hl', 'level': 0, 'unit': 'percent', 'values': [0]}, {'name': 'gust', 'levelType': 'hl', 'level': 10, 'unit': 'm/s', 'values': [4.0]}, {'name': 'Wsymb2', 'levelType': 'hl', 'level': 0, 'unit': 'category', 'values': [4]}]}
我似乎无法从列表中提取 pcat 值。
总之,期望的输出是:
2021-12-10T08:00:00Z
pcat: 0
提前谢谢你!
【问题讨论】: