【发布时间】:2019-06-10 00:00:07
【问题描述】:
我最近开始研究在 Tkinter 的 python 程序中使用 API,到目前为止,我已经能够编写一个程序,使用 TransportAPI 在伦敦地铁站的旅行规划器中提取旅行数据。
到目前为止,该程序运行良好,我遇到的唯一问题是将返回的 JSON 数据格式化为用户可读的格式。下面是创建 URL 并在程序中显示输出的函数的代码,以及程序运行时的当前输出。
创建 API URL 并返回输出:
def create_url(): # creates API url using inputted / chosen values
input_time = get_time()
input_date = get_date()
station_from = get_source()
station_to = get_destination()
search_url = 'https://transportapi.com/v3/uk/public/journey/from/'+station_from+'/to/'+station_to+'/at/'+input_date+'/'+input_time+'.json?app_id=bab9c3cc&app_key=0caef97a7e642a7d15f6f59efac6332c&modes=train¬_modes=bus-boat&service=tfl'
return search_url
在程序窗口中显示输出:
def display_results(): # displays API result to the user
data = get_data()
label_search_result.config(text=data)
程序中的当前输出:
{"request_time":"2019-06-10T00:50:45+01:00","source":"TfL journey planning
API","acknowledgements":"Transport for London","routes":
[{"duration":"00:09:00","route_parts":
[{"mode":"tube","from_point_name":"Stratford","to_point_name":"Liverpool
Street","destination":"Ealing
Broadway","line_name":"Central","duration":"00:09:00","departure_time":"12:46"
,"arrival_time":"12:55","coordinates":[[-0.00336,51.54171],[-0.00427,51.54114],[-0.00474,51.54078],[-0.00561,51.54003],[-0.00758,51.53835],[-0.00955,51.53671],[-0.01158,51.53537],[-0.01786,51.53208],[-0.01984,51.53117],[-0.02096,51.53064],[-0.0214,51.53037],[-0.0253,51.52724],[-0.02583,51.52699],[-0.02626,51.52688],[-0.02806,51.52654],[-0.03209,51.52567],[-0.03299,51.52548],[-0.03354,51.52533],[-0.03354,51.52533],[-0.03509,51.52494],[-0.03592,51.5247],[-0.0374,51.52418],[-0.03905,51.52366],[-0.04055,51.52328],[-0.04125,51.52314],[-0.04253,51.52314],[-0.04328,51.52324],[-0.04472,51.5236],[-0.0457,51.52393],[-0.04659,51.52435],[-0.04945,51.52616],[-0.04996,51.52643],[-0.05064,51.52665],[-0.0516,51.52684],[-0.05459,51.52706],[-0.05459,51.52706],[-0.0568,51.52722],[-0.05741,51.52722],[-0.062,51.52673],[-0.06601,51.52627],[-0.06796,51.526],[-0.06924,51.52575],[-0.07011,51.52552],[-0.07173,51.5248],[-0.07397,51.52386],[-0.0751,51.52336],[-0.0762,51.52271],[-0.08219,51.51805]]}],"departure_time":"12:46","departure_date":"2019-07-07","arrival_time":"12:55","arrival_date":"2019-07-07"},{"duration":"00:09:00","route_parts":[{"mode":"tube","from_point_name":"Stratford","to_point_name":"Liverpool Street","destination":"West Ruislip","line_name":"Central","duration":"00:09:00","departure_time":"12:48","arrival_time":"12:57","coordinates":[[-0.00336,51.54171],[-0.00427,51.54114],[-0.00474,51.54078],[-0.00561,51.54003],[-0.00758,51.53835],[-0.00955,51.53671],[-0.01158,51.53537],[-0.01786,51.53208],[-0.01984,51.53117],[-0.02096,51.53064],[-0.0214,51.53037],[-0.0253,51.52724],[-0.02583,51.52699],[-0.02626,51.52688],[-0.02806,51.52654],[-0.03209,51.52567],[-0.03299,51.52548],[-0.03354,51.52533],[-0.03354,51.52533],[-0.03509,51.52494],[-0.03592,51.5247],[-0.0374,51.52418],[-0.03905,51.52366],[-0.04055,51.52328],[-0.04125,51.52314],[-0.04253,51.52314],[-0.04328,51.52324],[-0.04472,51.5236],[-0.0457,51.52393],[-0.04659,51.52435],[-0.04945,51.52616],[-0.04996,51.52643],[-0.05064,51.52665],[-0.0516,51.52684],[-0.05459,51.52706],[-0.05459,51.52706],[-0.0568,51.52722],[-0.05741,51.52722],[-0.062,51.52673],[-0.06601,51.52627],[-0.06796,51.526],[-0.06924,51.52575],[-0.07011,51.52552],[-0.07173,51.5248],[-0.07397,51.52386],[-0.0751,51.52336],[-0.0762,51.52271],[-0.08219,51.51805]]}],"departure_time":"12:48","departure_date":"2019-07-07","arrival_time":"12:57","arrival_date":"2019-07-07"}]}
如何将这些数据格式化为用户更易读的内容?对于一个想法,理想的输出应该是这样的:
Source: Stratford
Destination: London Liverpool Street
Route:
Line: Central
To: Ealing Broadway
Duration: 09:00
Departure Time: 12:46
Arrival Time: 12:55
Source: Stratford
Destination: London Liverpool Street
Route:
Line: Central
To: West Ruslip
Duration: 09:00
Departure Time: 12:48
Arrival Time: 12:57
【问题讨论】:
-
Json 在 python 中被解析为字典。假设密钥没有改变,您可以将密钥解析为您想要的格式
标签: python json python-2.7 tkinter