python Извлечь элемент из ответа на запросы - PullRequest
0 голосов
/ 18 июня 2020

Я получил это из HTTP-запроса:

{u'accountDirectDialId': u'...', u'number': u'...', u'messageType': u'simple_message', u'configData': {u'audios': {u'message_audio': {u'duration': None, u'hashFile': u'...', u'id': u'16990559-acb9-11ea-af69-522c847d095a', u'name': None, u'uri': u'https://...'}}}, u'inboundCallerId': u'...', u'maxDestinationRetry': 1, u'hasVoicemail': False, u'voIp': {u'codePhone': 00}, u'hasMessage': True}

Это хранится в переменной.

Тогда, если я сделаю это, это сработает отлично:

myvar["configData"]["audios"]["message_audio"] 

Но если я go на один шаг дальше:

myvar["configData"]["audios"]["message_audio"]["uri"] 

Это с треском проваливается! Почему так происходит? uri - это просто параметр в "message_audio", когда я делаю это:

print('Audio URI: "%s"\n' % type(myvar["configData"]["audios"]) )

Я получаю

Python Error by calling script "mass": <type 'exceptions.TypeError'>
Message: string indices must be integers, not str
Exception: None

Traceback (most recent call last)

Вывод должен быть

'https://...'

Может кто-нибудь help?

ОБНОВЛЕНИЕ:

печать:

На один уровень выше: print ('[% s]: Audio URI: "% s" \ n'% (session_sip_call_id, type (CData.get ("configData", None) .get ("aud ios", None) .get ("message_audio", None))))

Выводит: Audio URI: ""

Но: print ('[% s]: Audio URI: "% s" \ n'% (session_sip_call_id, type (CData.get ("configData", None) .get ("aud ios" , Нет) .get ("message_audio", Нет) .get ("uri", Нет))))

возвращает:

Audio URI: "<type 'unicode'>"

спасибо!

1 Ответ

0 голосов
/ 18 июня 2020

Какую версию Python вы используете?

В Python 2 необходимо преобразовать Unicode Но в Python 3 это выполняется автоматически, однако вы можете использовать следующий фрагмент кода :

uni_var = str(myvar["configData"]["audios"]["message_audio"]["uri"])

print(uni_var)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...