这是我提出的上一个问题的更具体的后续跟进。基本上,我试图从处理GET请求后收到的JSON文本块中提取特定数据。限制为只有项目(通过使用dict.items()方法)后,我留下了以下JSON数据(有很多它,但这只是一个示例):
[('response',
{'count': 84,
'users': [{'location_id': 123456,
'acx_audit': None,
'flash_backup_url': u'',
'flash_backup_url_secure': u'',
'flash_click_variable': None,
'folder': None,
'format': u'url-json',
'height': 1,
'id': 36619222,
'is_prohibited': False,},
{'location_id': 5556667,
'acx_audit': None,
'flash_backup_url': u'',
'flash_backup_url_secure': u'',
'flash_click_variable': None,
'folder': None,
'format': u'url-json',
'height': 1,
'id': 4567777,
'is_prohibited': False,}
我正在尝试拉取的数据是' id'这些对象中的每一个的数字(不是' location_id')并将所有这些数字收集到一个数组中。我有点挣扎,因为我不习惯使用像这样的大型JSON数据结构,其中有字典和数组互相嵌套。我还必须运行一个循环才能完成此任务吗?
任何帮助都会非常感激,因为我现在卡住了。谢谢。
答案 0 :(得分:0)
可以如下进行(涉及一些严格的条件检查以避免引发异常)
inp=[('response',
{'count': 84,
'users': [{'location_id': 123456,
'acx_audit': None,
'flash_backup_url': u'',
'flash_backup_url_secure': u'',
'flash_click_variable': None,
'folder': None,
'format': u'url-json',
'height': 1,
'id': 36619222,
'is_prohibited': False},
{'location_id': 5556667,
'acx_audit': None,
'flash_backup_url': u'',
'flash_backup_url_secure': u'',
'flash_click_variable': None,
'folder': None,
'format': u'url-json',
'height': 1,
'id': 4567777,
'is_prohibited': False},
{'location_id': 5556667,
'acx_audit': None,
'flash_backup_url': u'',
'flash_backup_url_secure': u'',
'flash_click_variable': None,
'folder': None,
'format': u'url-json',
'height': 1,
'id': 4567777,
'is_prohibited': False},
{'location_id': 5556667,
'acx_audit': None,
'flash_backup_url': u'',
'flash_backup_url_secure': u'',
'flash_click_variable': None,
'folder': None,
'format': u'url-json',
'height': 1,
'id': 4567777,
'is_prohibited': False}]})]
output=[]
for tup_el in inp:
for el in tup_el:
if type(el) is dict:
if "users" in el.keys():
if type(el["users"]) is list:
for obj in el["users"]:
if "id" in obj.keys():
output.append(obj['id'])
print output