我有一个从 JSON 派生的相当复杂的数据结构json.load(<filehandle>)
,例如
{
"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
以防测量错误(如第一个)。如果是这样,应该分配 DBFields None
。如果是这种情况,则分配会引发异常:
TypeError: 'NoneType' object is unsubscriptable
有没有一种理智的方法可以让 for 循环运行而不引发异常(可能使用某种 .get() )?如果不是,那么处理这种不存在的数据结构的最佳方法是什么?