Seite 1 von 1

API benutzen, dict auslesen

Verfasst: Montag 9. Februar 2015, 20:23
von d4rkdr4g0n1
Hallo,

Ich habe ein kleines Problem beim auslesen eines JSON-Formats.
Konkret geht es um eine Wiener Linien API. Diese wird in einem JSON-Format ausgegeben die ich auslesen möchte. Dazu habe ich einen kleinen Code geschrieben.

Code: Alles auswählen

import urllib2
import simplejson

url = 'http://www.wienerlinien.at/ogd_realtime/monitor?rbl=4936&sender=rbl'
json_obj = urllib2.urlopen(url)
data_obj = simplejson.load(json_obj)

for item in data_obj['data']:
    print item

Das Problem ist jedoch das ich nicht auf die Einzelnen Elemente im dict. zugreifen kann. Könnte mir hier jmd. einen Tipp geben wie man sich durch so eine Liste bzw. dict iteriert ?
Konkret will ich auf die Abfahrtszeiten zugreifen.

mfg Gregor

ps.: Ich benutze python 2.7.9

Re: API benutzen, dict auslesen

Verfasst: Montag 9. Februar 2015, 20:27
von BlackJack
@d4rkdr4g0n1: Das Python-Tutorial in der Python-Dokumentation sollte die nötigen Kenntnisse vermitteln.

Re: API benutzen, dict auslesen

Verfasst: Montag 9. Februar 2015, 23:34
von d4rkdr4g0n1
Hallo, ich habs gelölst war doch nicht so schwierig. Ein bischen verwirrend.

Code: Alles auswählen

import urllib2
import simplejson

url = 'http://www.wienerlinien.at/ogd_realtime/monitor?rbl=4936&sender=rbl'



json_obj = urllib2.urlopen(url)
data_obj = simplejson.load(json_obj)
simplejson.dumps(data_obj)
# print(simplejson.dumps(data_obj,indent=2 * ''))


for item in data_obj['data']['monitors']:
    print("Haltestelle ") + item['locationStop']['properties']['title'] 

print('-------------------------------')
for item in data_obj['data']['monitors']:
    print("Richtung ") + item['lines'][0]['towards']
    
print('-------------------------------')
for item in data_obj['data']['monitors']:
    print item['lines'][0]['name']
    
print('-------------------------------')
for item in data_obj['data']['monitors']:
    print item['lines'][0]['departures']['departure'][0]['departureTime']['countdown']

for item in data_obj['data']['monitors']:
    print item['lines'][0]['departures']['departure'][1]['departureTime']['countdown']
Sieht umständlich aus :/

mfg Gregor

Re: API benutzen, dict auslesen

Verfasst: Dienstag 10. Februar 2015, 00:18
von BlackJack
@d4rkdr4g0n1: Man könnte Zwischenergebnisse die mehrfach ermittelt werden an einen Namen binden, statt immer wieder den selben Wert zu ermitteln.

Warum eigentlich `simplejson`? Wie alt ist denn die Python-Version auf der das laufen soll? Das `json`-Modul ist jetzt schon recht lange Teil der Standardbibliothek.