【问题标题】:Fail to acces dict in dict with string indeces must be integer error使用字符串索引无法访问 dict 中的 dict 必须是整数错误
【发布时间】:2018-11-24 03:38:32
【问题描述】:
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 并需要访问测试值。

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

等等

【问题讨论】:

    标签: python dictionary aws-secrets-manager


    【解决方案1】:

    响应是一个嵌套的 JSON 文档,而不是字典。先解码,json.loads():

    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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2014-12-30
      • 2021-10-30
      • 2021-09-20
      相关资源
      最近更新 更多