Python 从 JSON 文件迭代字典时出现 KeyError
Python KeyError when iterating dict from JSON-file
我正在尝试读取一个 JSON 文件(并最终将内容保存到数据库),但是当 运行 下面的代码时,我得到了一个 KeyError。 See sample JSON供参考。
'durationTimeFrom'
和 'durationTimeTo'
键在 JSON 文件中并非在所有情况下都存在(我认为仅当 eventType
为 80
时) .
如何在尝试读取值之前正确识别丢失的键,and/or如何为还没有键的项目插入虚拟键?
我已经搜索了 Google/Whosebug 并尝试了 if key in dict:
和 dict.get(key)
但没有成功。
import json
source = "feed_traffic.json" # JSON file to process
data = json.loads(open(source).read()) # Process JSON
total = data["events"]["totalCount"]
index = 0
events = data["events"]["list"][index:total]
for event in events:
eid = event["id"]
type = event['eventType']
header = event['headingText']
lat = event['latitude']
long = event['longitude']
created = event['created']
updated = event['updated']
expires = event['expireTime']
validFrom = event['durationTimeFrom']
validTo = event['durationTimeTo']
status = event['status']
# Just to check all is well, out data in console
print("Traffic Event", index, ":", eid, "-", type, "-", header, "(", long, ",", lat, ")")
index = index+1
dict.get
。这对我来说可以。你应该改变如下。
# before
validFrom = event['durationTimeFrom']
validTo = event['durationTimeTo']
# after
validFrom = event.get('durationTimeFrom')
validTo = event.get('durationTimeTo')
我正在尝试读取一个 JSON 文件(并最终将内容保存到数据库),但是当 运行 下面的代码时,我得到了一个 KeyError。 See sample JSON供参考。
'durationTimeFrom'
和 'durationTimeTo'
键在 JSON 文件中并非在所有情况下都存在(我认为仅当 eventType
为 80
时) .
如何在尝试读取值之前正确识别丢失的键,and/or如何为还没有键的项目插入虚拟键?
我已经搜索了 Google/Whosebug 并尝试了 if key in dict:
和 dict.get(key)
但没有成功。
import json
source = "feed_traffic.json" # JSON file to process
data = json.loads(open(source).read()) # Process JSON
total = data["events"]["totalCount"]
index = 0
events = data["events"]["list"][index:total]
for event in events:
eid = event["id"]
type = event['eventType']
header = event['headingText']
lat = event['latitude']
long = event['longitude']
created = event['created']
updated = event['updated']
expires = event['expireTime']
validFrom = event['durationTimeFrom']
validTo = event['durationTimeTo']
status = event['status']
# Just to check all is well, out data in console
print("Traffic Event", index, ":", eid, "-", type, "-", header, "(", long, ",", lat, ")")
index = index+1
dict.get
。这对我来说可以。你应该改变如下。
# before
validFrom = event['durationTimeFrom']
validTo = event['durationTimeTo']
# after
validFrom = event.get('durationTimeFrom')
validTo = event.get('durationTimeTo')