Попытка прочитать внутренний ключ, значение из unicode JSON в python

Я пытаюсь получить значение ключа снизу 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

может кто-нибудь помочь

Не используйте python2.

dfundako 08.10.2018 21:04
messagejson['Records'][0]['sql']['object']['key']
roganjosh 08.10.2018 21:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам не хватает уровня 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 08.10.2018 21:13

@Charan Ну, значит, ты что-то неправильно делаешь. Я просто взял ваш новый пример, убрал из него все отступы, и он отлично работает.

dfundako 08.10.2018 21:18

Кроме того, в Python3 переменная = сама по себе является некорректным синтаксисом. Не уверен, что то же самое и с Python2.

dfundako 08.10.2018 21:21

^ Это также недопустимый синтаксис в Python2.

andrew_reece 08.10.2018 21:28

@andrew_reece Я обновил сообщение, чтобы его можно было копировать / вставлять в cmd.

dfundako 08.10.2018 21:31

Другие вопросы по теме