无法访问dict中具有字符串索引的dict必须是整数

2024-05-16 06:44:02 发布

您现在位置:Python中文网/ 问答频道 /正文

import boto3
client = boto3.client('secretsmanager')

response = client.get_secret_value(SecretId='xxxx')
print('entire response:', response)
print('SecretString:',response['SecretString'])
print('testvalue:'response['SecretString']["testkey"])    

我正在尝试实现aws secretsmanager,需要访问testvalue。你知道吗

entire response:{---, u'SecretString': u'{"testkey":"testvalue","testkey2":"testvalue2"}', ----}
Secretstring:{"testkey":"testvalue","testkey2":"testvalue2"}
Traceback (most recent call last):
  File "secretmanagertest.py", line 7, in <module>
    print('testvalue',response['SecretString']["testkey"])
TypeError: string indices must be integers

当我尝试整数而不是我只得到特定的字符。你知道吗

print(response['SecretString'][0])
{
print(response['SecretString'][1])
"
print(response['SecretString'][2])
t

等等


Tags: importclientgetsecretvalueresponseboto3print
1条回答
网友
1楼 · 发布于 2024-05-16 06:44:02

响应是一个嵌套的JSON文档,而不是一个字典。先用^{}解码:

import json

secret = json.loads(response['SecretString'])
print(secret['testkey'])

演示:

>>> import json
>>> response = {u'SecretString': u'{"testkey":"testvalue","testkey2":"testvalue2"}'}
>>> response['SecretString']
u'{"testkey":"testvalue","testkey2":"testvalue2"}'
>>> json.loads(response['SecretString'])
{u'testkey2': u'testvalue2', u'testkey': u'testvalue'}
>>> json.loads(response['SecretString'])['testkey']
u'testvalue'

相关问题 更多 >