[英]How to extract elements from a JSON object
我正在嘗試從下面的json
對象( response
)中獲取DBInstanceIdentifier
值
{
'Marker': 'string',
'DBInstances': [
{
'DBInstanceIdentifier': 'string',
'DBInstanceClass': 'string',
'Engine': 'string',
'DBInstanceStatus': 'string',
'MasterUsername': 'string',
'DBName': 'string',
'Endpoint': {
'Address': 'string',
'Port': 123,
'HostedZoneId': 'string'
},
'AllocatedStorage': 123,
'InstanceCreateTime': datetime(2015, 1, 1),
'PreferredBackupWindow': 'string',
'BackupRetentionPeriod': 123,
'DBSecurityGroups': [
{
'DBSecurityGroupName': 'string',
'Status': 'string'
},
],
'VpcSecurityGroups': [
{
'VpcSecurityGroupId': 'string',
'Status': 'string'
},
],
'DBParameterGroups': [
{
'DBParameterGroupName': 'string',
'ParameterApplyStatus': 'string'
},
],
'AvailabilityZone': 'string',
'DBSubnetGroup': {
'DBSubnetGroupName': 'string',
'DBSubnetGroupDescription': 'string',
'VpcId': 'string',
'SubnetGroupStatus': 'string',
'Subnets': [
{
'SubnetIdentifier': 'string',
'SubnetAvailabilityZone': {
'Name': 'string'
},
'SubnetStatus': 'string'
},
],
'DBSubnetGroupArn': 'string'
},
'PreferredMaintenanceWindow': 'string',
'PendingModifiedValues': {
'DBInstanceClass': 'string',
'AllocatedStorage': 123,
'MasterUserPassword': 'string',
'Port': 123,
'BackupRetentionPeriod': 123,
'MultiAZ': True|False,
'EngineVersion': 'string',
'LicenseModel': 'string',
'Iops': 123,
'DBInstanceIdentifier': 'string',
'StorageType': 'string',
'CACertificateIdentifier': 'string',
'DBSubnetGroupName': 'string',
'PendingCloudwatchLogsExports': {
'LogTypesToEnable': [
'string',
],
'LogTypesToDisable': [
'string',
]
},
'ProcessorFeatures': [
{
'Name': 'string',
'Value': 'string'
},
]
},
'LatestRestorableTime': datetime(2015, 1, 1),
'MultiAZ': True|False,
'EngineVersion': 'string',
'AutoMinorVersionUpgrade': True|False,
'ReadReplicaSourceDBInstanceIdentifier': 'string',
'ReadReplicaDBInstanceIdentifiers': [
'string',
],
'ReadReplicaDBClusterIdentifiers': [
'string',
],
'LicenseModel': 'string',
'Iops': 123,
'OptionGroupMemberships': [
{
'OptionGroupName': 'string',
'Status': 'string'
},
],
'CharacterSetName': 'string',
'SecondaryAvailabilityZone': 'string',
'PubliclyAccessible': True|False,
'StatusInfos': [
{
'StatusType': 'string',
'Normal': True|False,
'Status': 'string',
'Message': 'string'
},
],
'StorageType': 'string',
'TdeCredentialArn': 'string',
'DbInstancePort': 123,
'DBClusterIdentifier': 'string',
'StorageEncrypted': True|False,
'KmsKeyId': 'string',
'DbiResourceId': 'string',
'CACertificateIdentifier': 'string',
'DomainMemberships': [
{
'Domain': 'string',
'Status': 'string',
'FQDN': 'string',
'IAMRoleName': 'string'
},
],
'CopyTagsToSnapshot': True|False,
'MonitoringInterval': 123,
'EnhancedMonitoringResourceArn': 'string',
'MonitoringRoleArn': 'string',
'PromotionTier': 123,
'DBInstanceArn': 'string',
'Timezone': 'string',
'IAMDatabaseAuthenticationEnabled': True|False,
'PerformanceInsightsEnabled': True|False,
'PerformanceInsightsKMSKeyId': 'string',
'PerformanceInsightsRetentionPeriod': 123,
'EnabledCloudwatchLogsExports': [
'string',
],
'ProcessorFeatures': [
{
'Name': 'string',
'Value': 'string'
},
],
'DeletionProtection': True|False,
'AssociatedRoles': [
{
'RoleArn': 'string',
'FeatureName': 'string',
'Status': 'string'
},
],
'ListenerEndpoint': {
'Address': 'string',
'Port': 123,
'HostedZoneId': 'string'
},
'MaxAllocatedStorage': 123
},
]
}
這是我嘗試過的:
response = rds_client.describe_db_instances()
InstanceIdentifierNames = response['DBInstances']['DBInstanceIdentifier']
print(InstanceIdentifierNames)
但我收到此錯誤:
類型錯誤:列表索引必須是整數或切片,而不是 st
DBInstances 是一個實例列表,因此您需要先獲取給定的 DBInstance,然后才能獲取其標識符。
我懷疑您想要以下內容:
response = rds_client.describe_db_instances()
InstanceIdentifierNames = []
for DBInstance in response['DBInstances']:
InstanceIdentifierNames.append(DBInstance['DBInstanceIdentifier'])
print(InstanceIdentifierNames)
因為DBInstances
是列表。 所以嘗試:
response['DBInstances'][0]['DBInstanceIdentifier']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.