我有一个使用json.load(< filehandle>)从JSON派生的相当复杂的数据结构,例如
{
"sensors": {
"measurements": [
[
null,
null,
null
],
[
{
"sensor": "Fields 341",
"remote": null,
"mark": "reliable",
"duration": 81.54296875
},
{
"sensor": "Fields 341",
"remote": null,
"mark": "reliable",
"duration": 61.54534875
},
{
"sensor": "Fields 341",
"remote": null,
"mark": "reliable",
"duration": 61.89378945
}
]
]
}
}
结果是嵌套的字典和列表,例如
{u'sensors': {u'measurements': [[None, None, None],
[{u'duration': 81.54296875,
u'mark': u'reliable',
u'remote': None,
u'sensor': u'Fields 341'},
{u'duration': 61.545348750000002,
u'mark': u'reliable',
u'remote': None,
u'sensor': u'Fields 341'},
{u'duration': 61.89378945,
u'mark': u'reliable',
u'remote': None,
u'sensor': u'Fields 341'}]]}}
目标是通过sqlalchemy提取数据并将其填充到数据库中.像这样:
for item in sensors["measurements"]:
for j in range(len(sensors["measurements"])):
DBTable.DBField = item[j]["sensor"]
...
问题是:如果测量错误(如第一个错误),则数据中的任何部分都可以用null / None替换.如果是这样,则应将DBField分配为None.在这种情况下,分配会引发异常:
TypeError: 'NoneType' object is unsubscriptable
有没有一种合理的方法可以使for循环运行而不会引发异常(也许使用某类的.get())?如果不是,那么处理这种不存在的数据结构的最佳方法是什么?