如何使用python从json获取精确数据

时间:2017-07-21 09:47:40

标签: python json

我在尝试解析json文件时遇到错误

{
0:
    {
        'data':
            [
                {
                    'state': 1,
                    'invitation_sent_at': None,
                    'group_id': None,
                    'firstname': 'goog',
                    'company': 'wbru',
                    'member_of': None,
                    'updated_at': '2017-07-21T08:07:45.375Z',
                    'last_login': None,
                    'manager_ad_id': None,
                    'distinguished_name': None,
                    'comment': '',
                    'username': 'predicted',
                    'title': '',
                    'lastname': 'hello',
                    'samaccountname': None,
                    'status': 1,
                    'locked_until': None,
                    'locale_code': None,
                    'role_id': None,
                    'userprincipalname': None,
                    'phone': '777',
                    'openid_name': 'gege',
                    'directory_id': None,
                    'id': 34486990,
                    'department': '',
                    'activated_at': None,
                    'external_id': None,
                    'created_at': '2017-07-21T08:07:45.347Z',
                    'email': 'gege@mail.ru',
                    'password_changed_at': None,
                    'invalid_login_attempts': None
                },
            ], 
        'pagination':
            {
                'before_cursor': None,
                'previous_link': None,
                'after_cursor': None,
                'next_link': None
            },
       'status':
            {
                'type': 'success',
                'message': 'Success',
                'code': 200,
                'error': False
            }
    }
}

所以我需要得到身份证明。我用了

dumps = json.dumps(allUsers)
print(dumps)

这将打印出json文件。 但是当我试图获取数据或id时,它会显示此错误

print(dumps['data'])

Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: string indices must be integers

请帮助我获取身份证明。

2 个答案:

答案 0 :(得分:1)

print(json.loads(dumps)[“data”][0]['id')

json.loads()接受json字符串。然后根据你的json将它转换为python dict或python list。在这种情况下,它会将其转换为dict

获得词典后,您可以使用["data"]访问属性。

如果您遇到TypeError: string indices must be integers错误,则表示json.loads(dumps)可能会返回listdict,而不是dict。所以你可能需要做以下几点。

print(json.loads(dumps)[0]["data"][0]["id"]

[0]将选择列表中的第一个对象,然后您可以访问其数据属性。

希望有意义!

答案 1 :(得分:0)

转储是一个字符串而不是字典,因此您无法访问“数据”