Я пытаюсь получить значение ключа снизу unicode JSON - это python
messagejson = {
u'Records':
[
{
u'requestParameters': {u'sourceIPAddress': u'113.112.10.06'},
u'sql': {u'configurationId': u'note',
u'object': {u'eTag': u'ed3645fa5ee', u'sequencer': u'005', u'key': u'src-1.txt', u'size': 606},
u'mysql': {u'dn': u'url', u'name': u'invoice',
u'ownerIdentity': {u'principalId': u'A3UJ54'}
},
u'myval': u'1.0'
},
u'ee': {u'abc': u'tcCh6T', u'x': u'487DBE36E1'},
u'userIdentity': {u'principalId': u'AWS:AIDAIOJ4'},
u'eventSource': u'source'
}
]
}
Пробовал использовать
print messagejson['Records'][0]['sql']['key']
получение ошибки
TypeError: list indices must be integers, not str
может кто-нибудь помочь
messagejson['Records'][0]['sql']['object']['key']





Вам не хватает уровня object при индексировании:
messagejson['Records'][0]['sql']['object']['key']
# src-1.txt
Вам не хватает одного уровня в вашем dict get.
запустите это, и вы увидите.
print messagejson['Records'][0]['sql']
«Ключ» находится в пределах значения ключа «объект», поэтому вам нужно добавить «объект», прежде чем вы получите «ключ».
print messagejson['Records'][0]['sql']['object']['key']
Пробовал, не повезло. Обновил вопрос
@Charan Ну, значит, ты что-то неправильно делаешь. Я просто взял ваш новый пример, убрал из него все отступы, и он отлично работает.
Кроме того, в Python3 переменная = сама по себе является некорректным синтаксисом. Не уверен, что то же самое и с Python2.
^ Это также недопустимый синтаксис в Python2.
@andrew_reece Я обновил сообщение, чтобы его можно было копировать / вставлять в cmd.
Не используйте python2.