从Python中的JSON中的嵌套字典和数组中提取特定值

时间:2017-03-29 04:02:53

标签: python arrays json python-2.7 dictionary

这是我提出的上一个问题的更具体的后续跟进。基本上,我试图从处理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数据结构,其中有字典和数组互相嵌套。我还必须运行一个循环才能完成此任务吗?

任何帮助都会非常感激,因为我现在卡住了。谢谢。

1 个答案:

答案 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