【发布时间】:2017-03-22 16:29:47
【问题描述】:
我正在尝试读取 JSON 文件(并最终将内容保存到数据库中),但在运行以下代码时出现 KeyError。 See sample JSON供参考。
键 'durationTimeFrom' 和 'durationTimeTo' 在 JSON 文件中并非在所有情况下都存在(我认为只有当 eventType 是 80 时)。
如何在尝试读取值之前正确识别丢失的键,和/或如何为尚无键的项目插入虚拟键?
我已经搜索过 Google/StackOverflow 并尝试了 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
【问题讨论】:
-
您是否尝试过实现错误和异常处理? docs.python.org/2/tutorial/errors.html
-
event.get('id') 如果键不存在则返回 None
-
help(dict.get)说D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.您可以提供自己的默认值。假设您希望默认 id 为 -1,您将eid = event.get("id", -1)。 -
@glls 是的,这是我的下一步 ;-) 感谢输入
标签: python json dictionary keyerror